2008-04-21  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/libs/Makefile.am:
	  Fix docs build again by adding libgstnet-0.10.so to SCANOBJ_DEPS.

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

	Patch by: Olivier Crete <tester at tester dot ca>

	* plugins/elements/gstqueue.c: (gst_queue_handle_src_query):
	Add the min-threshold to the min latency if possible. Fixes #529148.

2008-04-21  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer.types.in:
	  Stupid editor, I removed that line as it should go in yet.

2008-04-21  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer.types.in:
	* docs/libs/gstreamer-libs.types:
	  Remove library types fro core docs and have them in libs docs.
	  Reformat and cleanup. Add comment for miniobject types.

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

	* gst/gsturi.c: (gst_uri_get_protocol):
	  Fix leak: g_strdown operates on the string in place, while
	  g_ascii_strdown() returns a newly-allocated string.

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

	* tools/gst-inspect.c: (print_uri_handler_info),
	(print_element_info):
	Print the URI protocols and the URI type supported by the element.

2008-04-19  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gsttaglist.c: (gst_tag_merge_strings_with_comma):
	Use g_value_take_string() instead of the deprecated
	g_value_set_string_take_ownership().

2008-04-19  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstregistrybinary.c: (_gst_crc32):
	Return the old CRC instead of 0 if we give a NULL buffer
	or a buffer with a length of 0.

2008-04-19  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gsturi.c: (gst_uri_protocol_check_internal),
	(gst_uri_get_protocol), (gst_uri_has_protocol),
	(gst_uri_construct), (gst_uri_handler_set_uri):
	A valid URI scheme can also include '+', '-' and '.' additional
	to alphanumeric characters as per RFC 3986 Section 3.1.

	Handle URI schemes case insensitive in all places and convert
	to lower-case when constructing an URI or setting an URI with
	the GstURIHandler interface. Fixes bug #528868.
	All elements can still assume (as before) that they will
	get passed URIs with a lower-case URI scheme by the GstURIHandler
	interface.

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

	* gst/gstcaps.c: (gst_static_caps_get):
	* gst/gstclock.c: (gst_clock_entry_new):
	  Don't use g_atomic_set_int where it's not needed.

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

	* gst/gstvalue.c: (gst_value_deserialize_caps):
	* gst/parse/grammar.y:
	Fix 2 caps leaks.

2008-04-17  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstutils.c: (gst_atomic_int_set):
	Use g_atomic_int_set() here too instead of assignment +
	g_atomic_int_get().

2008-04-17  Sebastian Dröge  <slomo@circular-chaos.org>
	
	* gst/gstutils.c:
	* gst/gstutils.h:
	API: Deprecate gst_atomic_int_set(), g_atomic_int_set() should be used
	now that we depend on new enough GLib.

	* gst/gstcaps.c: (gst_static_caps_get):
	* gst/gstclock.c: (gst_clock_entry_new):
	* gst/gstinfo.c: (_gst_debug_init), (gst_debug_set_colored),
	(gst_debug_set_default_threshold), (_gst_debug_category_new),
	(gst_debug_category_set_threshold):
	* libs/gst/base/gstbasesink.c: (gst_base_sink_init),
	(gst_base_sink_set_qos_enabled):
	* libs/gst/net/gstnettimeprovider.c:
	(gst_net_time_provider_set_property):
	Use g_atomic_int_set() instead of gst_atomic_int_set().

2008-04-16  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstquery.c:
	  Also use G_GINT64_CONSTANT for the queries.

2008-04-16  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstmessage.c:
	  Use G_GINT64_CONSTANT in varargs function.

2008-04-16  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstregistrybinary.c: (gst_registry_binary_initialize_magic):
	Initialize the registry magic with zeroes.

2008-04-16  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstregistrybinary.c: (_gst_crc32),
	(gst_registry_binary_write),
	(gst_registry_binary_initialize_magic),
	(gst_registry_binary_write_cache),
	(gst_registry_binary_check_magic),
	(gst_registry_binary_read_cache):
	* gst/gstregistrybinary.h:
	Add crc32 checksum to the binary registry file and check this before
	accepting a registry file.

	Also free the data list when writing to the registry file fails.

2008-04-16  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstregistrybinary.c: (gst_registry_binary_save_feature),
	(gst_registry_binary_load_feature),
	(gst_registry_binary_load_plugin):
	If an element supports the Uri interface, returns a valid pointer
	to the supported URI protocols but this pointer contains nothing
	don't try to save that as it will corrupt the registry.

	Don't unref the plugin if we added it to the registry already but
	fail to load a feature as gst_registry_add_plugin() takes ownership
	of the plugin.

	Improve debugging a bit.

2008-04-16  Stefan Kost  <ensonic@users.sf.net>

	* gst/gsttaglist.h:
	  Clarify some tag item docs after discussion on irc.

2008-04-15  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-docs.sgml:
	  Remove commented out plugins (they have their own docs). Update
	  comments.

2008-04-15  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* gst/gstparamspecs.c:
	* gst/gstparamspecs.h:
	  Add GST_PARAM_CONTROLLABLE and GST_PARAM_USER_SHIFT. Move paramspec
	  docs to own section.

	* gst/gstvalue.c:
	  This now only documents GValue.
	  
	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/controller/gstcontroller.h:
	  Remove GST_PARAM_CONTROLLABLE.

2008-04-15  Stefan Kost  <ensonic@users.sf.net>

	* docs/README:
	  Correct file path. Tell about how to use -overrides.txt.
	* docs/design/draft-tagreading.txt:
	  Small design update.

2008-04-14  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstregistrybinary.c: (gst_registry_binary_load_feature),
	(gst_registry_binary_load_plugin):
	Fix a typo in a debug message and revert change from yesterday as
	gst_registry_add_plugin() will only fail if something is really wrong
	already and we can't survive it anyway.

2008-04-14  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gst.c: (init_post), (gst_deinit):
	  Pre-register GstGError GType from a thread-safe context
	  (fixes #527967); unref enum type classes in deinit.

2008-04-13  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Rene Stadler <mail at renestadler de>

	* gst/gsttagsetter.c: (gst_tag_setter_merge_tags):
	  Merging an empty list with another list in KEEP_ALL mode should
	  yield an empty list as result and not the second list (#512578).

	* tests/check/gst/gsttagsetter.c:
	  Add unit test for tag merge modes and the aforementioned bug.

2008-04-13  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Rene Stadler <mail at renestadler de>

	* gst/gsttaglist.h:
	  Fix description to match the order in the table (#512577).
  
2008-04-13  Tim-Philipp Müller  <tim at centricular dot net>

	Patch by: Kwang Yul Seo  <kwangyul.seo gmail com>

	* libs/gst/net/gstnettimepacket.h:
	* docs/libs/gstreamer-libs-sections.txt:
	  Define socklen_t as int if it's not defined yet. Fixes compilation
	  with MSVC6 and other versions where socklen_t is not defined in
	  the windows headers (#518022).

2008-04-13  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstregistrybinary.c: (gst_registry_binary_load_plugin):
	If gst_registry_add_plugin() fails our reference to the plugin is
	invalid so don't try to use it anymore and instead error out.

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

	* tools/gst-xmlinspect.c: (print_element_info), (main):
	  De-cruft a bit. If no argument is specified, print all elements in
	  XML syntax rather than a freestyle list of elements like gst-inspect.
	  Also, don't print XML header chunk unless we actually have something
	  to print (ie. don't print it before an error message); print error
	  message to stderr not stdout. Remove support for printing plugin
	  info (it would just output something freestyle along the lines of
	  gst-inspect so far), which fixes #514507. Also add license header.

2008-04-11  Julien Moutte  <julien@fluendo.com>

        Mac OS X love...
	* configure.ac: Merge platform specific defines, introduce a new
	define on OS X to remember that forking when updating registry is
	unsafe.
	* docs/faq/gst-uninstalled: Updated to include gst-libs in the bad
	module.
	* gst/gst.c: Don't fork when updating registry if GST_HAVE_UNSAFE_FORK
	is defined.
	* gst/gstregistry.c: (gst_registry_scan_path_level): Fixed a bogus
	condition that leads to absolutely no plugins being registered on
	OS X.

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

	Based on patch by: José Alburquerque <jaalburqu at svn dot gnome dot org>

	* gst/gstutils.c: (gst_pad_add_data_probe),
	  (gst_pad_add_data_probe_full), (gst_pad_add_event_probe),
	  (gst_pad_add_event_probe_full), (gst_pad_add_buffer_probe),
	  (gst_pad_add_buffer_probe_full):
	* gst/gstutils.h:
	* docs/gst/gstreamer-sections.txt:
	* win32/common/libgstreamer.def:
	  Add gst_pad_add_*_probe_full() functions with a notify callback that
	  lets the caller free the data it passes to the probe functions. This
	  is useful for bindings such as gst-python or gstreamermm (#526814).
	  API: gst_pad_add_data_probe_full
	  API: gst_pad_add_buffer_probe_full
	  API: gst_pad_add_event_probe_full

	* tests/check/gst/gstutils.c:
	  Add minimal unit test to make sure freeing the data actually works
	  as expected.

	* tests/benchmarks/.cvsignore:
	  Random cvsignore addendum.

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

	* gst/gstdebugutils.h: (GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS),
	  (GST_DEBUG_BIN_TO_DOT_FILE):
	  Mention GstDebugGraphDetails enum type in doc blurb so we get a link
	  to it in the docs (since these are macros the types of the arguments
	  won't be shown in the docs otherwise).

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

	* gst/gstpad.c:
	  Do not abort on out of memory for pad_alloc_buffer.

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

	* libs/gst/check/gstcheck.c:
	  Remove blank line between symbol name ad parameters to fix gtkdoc
	  warning.

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

	Patch by:  José Alburquerque <jaalburqu at svn dot gnome dot org>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstsegment.c:
	* gst/gstsegment.h:
	* win32/common/libgstreamer.def:
	  Expose gst_segment_copy() to make things easier for the c++ bindings.
	  Fixes #518932.
	  API: gst_segment_copy()

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

	* gst/gst.c: (gst_init_get_option_group), (init_post):
	  Fix const position; ref GType classes for enum types to work
	  around thread-safety issues in GLib versions < 2.16.

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

	* docs/design/part-buffering.txt:
	Fix some typos and set the estimated total for push mode to -1.

	* gst/gstquery.c: (gst_query_new_buffering):
	Set buffering-left to 0 as we're not buffering by default.

	* libs/gst/base/gstbasesrc.c: (gst_base_src_default_query):
	Implement BUFFERING query.

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

	Based on patch by: Milosz Derezynski <internalerror gmail com>

	* gst/gsterror.c: (_gst_stream_errors_init):
	* gst/gsterror.h:
	  Add two new error codes for encrypted content. Fixes #524659.
	  API: GST_STREAM_ERROR_DECRYPT
	  API: GST_STREAM_ERROR_DECRYPT_NOKEY

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

	* gst/gstquery.h:
	  Fix typo.

	* win32/common/libgstreamer.def:
	  Add new functions.

2008-04-09  Sebastian Dröge  <slomo@circular-chaos.org>

	* plugins/elements/gstidentity.c: (gst_identity_event),
	(gst_identity_start):
	Fix imperfect timestamp/offset checks when we get another NEWSEGMENT
	event after processing some data. Fixes bug #526042.

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gstquery.c: (gst_query_parse_latency),
	(gst_query_set_buffering_percent),
	(gst_query_parse_buffering_percent),
	(gst_query_set_buffering_range), (gst_query_parse_buffering_range):
	* gst/gstquery.h:
	Rename _avail -> _range
	API: gst_query_set_buffering_range
	API: gst_query_parse_buffering_range

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

	* docs/design/part-buffering.txt:
	* gst/gstquark.c:
	* gst/gstquark.h:
	* gst/gstquery.c: (gst_query_parse_latency),
	(gst_query_new_buffering), (gst_query_set_buffering_percent),
	(gst_query_parse_buffering_percent):
	* gst/gstquery.h:
	Add busy field and quark for the buffering query so that the app can
	only use the query to see if buffering is in progress.

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gstmessage.c: (gst_message_set_buffering_stats),
	(gst_message_parse_buffering_stats):
	* gst/gstmessage.h:
	* gst/gstquery.c: (gst_query_new_latency), (gst_query_set_latency),
	(gst_query_parse_latency), (gst_query_new_buffering),
	(gst_query_set_buffering_percent),
	(gst_query_parse_buffering_percent),
	(gst_query_set_buffering_stats), (gst_query_parse_buffering_stats),
	(gst_query_set_buffering_avail), (gst_query_parse_buffering_avail):
	* gst/gstquery.h:
	Reorder the message docs and headers for clarity.
	Add aditional buffering stats API for messages.
	Add buffering query.
	Convert some leftover queries to use GstQuark.
	API: gst_message_set_buffering_stats
	API: gst_message_parse_buffering_stats
	API: GST_QUERY_BUFFERING
	API: GstBufferingMode
	API: gst_query_new_buffering
	API: gst_query_set_buffering_percent
	API: gst_query_parse_buffering_percent
	API: gst_query_set_buffering_stats
	API: gst_query_parse_buffering_stats

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

	* gst/gstmessage.c: (gst_message_new_error),
	(gst_message_new_warning), (gst_message_new_info),
	(gst_message_new_buffering), (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_new_duration),
	(gst_message_new_async_start), (gst_message_parse_buffering),
	(gst_message_parse_state_changed),
	(gst_message_parse_clock_provide), (gst_message_parse_clock_lost),
	(gst_message_parse_new_clock), (gst_message_parse_error),
	(gst_message_parse_warning), (gst_message_parse_info),
	(gst_message_parse_segment_start),
	(gst_message_parse_segment_done), (gst_message_parse_duration),
	(gst_message_parse_async_start):
	Use GstQuark for messages.

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

	* gst/gstquark.c: (_priv_gst_quarks_initialize):
	* gst/gstquark.h:
	Add some more quarks needed for messages and queries.

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

	* docs/design/part-buffering.txt:
	Remove the "none" buffering mode, STREAM is a good default.
	Move estimated-time to the avail query, that's when it will be needed.
	Other small typo fixes and updates.

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

	* gst/gstindex.c: (gst_index_resolver_get_type):
	  Don't put descriptions into the nick field of a GEnumValue: it's not
	  meant for that and some language bindings rely on the nick field to
	  construct constants and the like. Fixes #526705.

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

	* NEWS:
	* RELEASE:
	* gstreamer.doap:
	  Merge other changes from 0.10.19 release branch.

2008-04-06  Sebastian Dröge  <slomo@circular-chaos.org>

	Patch by: Damien Lespiau <damien dot lespiau at gmail dot com>

	* configure.ac:
	Actually build dlls when cross-compiling with mingw32.
	Fixes bug #526247.

2008-04-05  Sebastian Dröge  <slomo@circular-chaos.org>

	Patch by: Damien Lespiau <damien dot lespiau at gmail dot com>

	* gst/gstpoll.c:
	Fix compilation of GstPoll with mingw32. Fixes bug #526236.

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

	* docs/design/draft-latency.txt:
	Fix typo.

	* docs/design/part-buffering.txt:
	Update design docs with more buffering ideas.

2008-04-03  Tim-Philipp Müller  <tim at centricular dot net>

	* configure.ac:
	  Bump version to 0.10.19.1 after the unscheduled 0.10.19 release.

2008-04-03  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	  Revert part that belongs to the preset patch.

2008-04-03  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	  Add qoutes to the define. Fixes # 525961.

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

	* plugins/indexers/gstfileindex.c: (_file_index_id_free),
	(gst_file_index_load), (gst_file_index_add_id),
	(gst_file_index_get_assoc_entry):
	* plugins/indexers/gstmemindex.c: (gst_mem_index_free_format),
	(gst_mem_index_free_id), (gst_mem_index_add_id),
	(gst_mem_index_index_format):
	Use GSlice when possible.

2008-04-02  Sebastian Dröge  <slomo@circular-chaos.org>

	* libs/gst/controller/gstinterpolationcontrolsource.c:
	(gst_control_point_free),
	(gst_interpolation_control_source_set_internal):
	Use GSlice for allocating the control points.

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

	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_class_init),
	(gst_type_find_element_set_property),
	(gst_type_find_element_get_property),
	(gst_type_find_element_activate):
	* plugins/elements/gsttypefindelement.h:
	Cleanup properties.
	Fix pad leak when peer query fails.
	We can still typefind when the peer returns -1.
	Add property to force caps and bypass typefinding. This will be used in
	uridecodebin.
	API::force-caps

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

	* configure.ac:
	Require GLib 2.12.

	* gst/glib-compat-private.h:
	* gst/gstcaps.c: (gst_caps_new_empty), (_gst_caps_free):
	* gst/gstclock.c: (gst_clock_entry_new), (_gst_clock_id_free):
	Unconditionally use GSlice for allocation.

	* gst/gstpoll.c: (gst_poll_new), (gst_poll_free):
	* gst/gstsegment.c: (gst_segment_new), (gst_segment_free):
	* gst/gststructure.c: (gst_structure_id_empty_new_with_size),
	(gst_structure_free):
	Use GSlice for allocation.

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

	* gst/parse/Makefile.am:
	* gst/parse/grammar.tab.pre.c:
	* gst/parse/grammar.tab.pre.h:
	* gst/parse/lex._gst_parse_yy.pre.c:
	Require a new enough flex and bison and remove the parser hacks to use
	a pre-regenerated version.

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

	patch by: Jason Zhao <E3423C@motorola.com>

	* configure.ac: Add a configure switch to disable option parsing
	in gst_init.
	Fixes #522882.

2008-03-31  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	* gst/gstregistry.c:
	  MacOS has plugins under .so or under .dylib. Add detection for MacOS
	  and handle this case.

	* gst/gst.c:
	  Add a comment here describing, why we stat each plugin and not try to
	  be smart.

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

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_prepare_output_buffer):
	Also unset the GAP flag on buffers if we're working inplace but
	the element is not GAP-aware.

	Mark a comment as FIXME 0.11.

2008-03-31  Stefan Kost  <ensonic@users.sf.net>

	* gst/gst.c:
	  Fix type in log message and add one to ease seeing how long registry
	  cache verification takes.

	* gst/gstregistry.c:
	  Only test plugin filenames against G_MODULE_SUFFIX.

2008-03-31  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstdebugutils.c:
	  Improve handling ghost/proxy pads.

2008-03-27  Stefan Kost  <ensonic@users.sf.net>

	* docs/gst/gstreamer-sections.txt:
	* gst/gstpad.c:
	* gst/gstpad.h:
	  Expose macro to docs and fix link to it.

2008-03-27  Michael Smith <msmith@fluendo.com>

	* libs/gst/dataprotocol/dataprotocol.c:
	(gst_dp_packet_from_event_1_0):
	  When calculating GDP body CRC, use the correct pointer. 
	  Fixes part of #522401.

2008-03-24  Wim Taymans  <wim.taymans@collabora.co.uk>

	Patch by: Mark Nauwelaerts <manauw at skynet be>

	* plugins/elements/gstidentity.c: (gst_identity_class_init),
	(gst_identity_init), (gst_identity_prepare_output_buffer):
	Identity is not always a passthrough element, it can modify the buffer
	timestamps when it has a datarate and operates in single-segment mode.
	We therefore make it an in_place filter with a custom buffer prepare
	function that conditionally makes the input buffer metadata writable
	when needed.  Fixes #523985.

2008-03-24  Wim Taymans  <wim.taymans@collabora.co.uk>

	Patch by: Mark Nauwelaerts <manauw at skynet be>

	* gst/gstclock.h:
	* libs/gst/base/gstbasesrc.h:
	* libs/gst/base/gstbasetransform.c:
	* libs/gst/check/gstcheck.c:
	Small documentation fixes. Fixes #523978.

2008-03-24  Wim Taymans  <wim.taymans@collabora.co.uk>

	* plugins/elements/gstfdsink.c: (gst_fd_sink_render):
	* plugins/elements/gstfdsrc.c: (gst_fd_src_create):
	Also retry our poll_wait when we get EAGAIN. Fixes #524041.

2008-03-24  Wim Taymans  <wim.taymans@collabora.co.uk>

	* plugins/elements/gstmultiqueue.c: (single_queue_overrun_cb),
	(single_queue_underrun_cb):
	When trying to make room in the queue, bump the max allowed buffers
	bigger than the current amount of buffers in the queue. this fixes some
	nasty deadlocks in multiqueue when dynamically changing the limits of
	the queue.

2008-03-24  Wim Taymans  <wim.taymans@collabora.co.uk>

	Patch by:  José Alburquerque <jaalburqu at svn dot gnome dot org>

	* gst/gstcaps.c: (gst_caps_set_simple),
	(gst_caps_set_simple_valist), (gst_caps_intersect):
	* gst/gstcaps.h:
	Constify the field gchar * params in set_simple and friends.
	Fixes #522326.

2008-03-24  Wim Taymans  <wim.taymans@collabora.co.uk>

	* gst/gstvalue.c: (gst_value_transform_object_string):
	Transform a GstObject to a more meaningfull string that includes the
	object type in addition to its name.

2008-03-23  Stefan Kost  <ensonic@users.sf.net>

	* ChangeLog:
	  ChangeLog surgery to add bugnumber to commit.

2008-03-23  Rene Stadler  <mail@renestadler.de>

	* libs/gst/base/gstbasetransform.c:
	(gst_base_transform_set_gap_aware): Fix confusing documentation.

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

	* gst/gstregistrybinary.c: (gst_registry_binary_write):
	Rename constant everywhere and don't forget one occurence.

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

	* gst/gstregistrybinary.c: (gst_registry_binary_write):
	Align memory to the pointer size even if the architecture allows
	unaligned memory access. Unaligned memory access usually comes with
	performance penality.

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

	* gst/gstregistrybinary.c: (gst_registry_binary_write),
	(gst_registry_binary_check_magic),
	(gst_registry_binary_load_pad_template),
	(gst_registry_binary_load_feature),
	(gst_registry_binary_load_plugin):
	Align memory to the pointer size instead of always 32 bit. Fixes
	unaligned memory accesses on ia64 and friends.

	* gst/gstregistrybinary.h:
	Bump binary registry format version for this as it changes the
	format on those architectures that don't have unaligned access
	and 64 bit pointers.

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

	* docs/pwg/advanced-dparams.xml:
	* docs/pwg/building-props.xml:
	* docs/pwg/other-source.xml:
	* gst/glib-compat.h:
	* gst/gstbin.c: (gst_bin_class_init):
	* 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/base/gstdataqueue.c: (gst_data_queue_class_init):
	* libs/gst/check/gstcheck.c: (_gst_check_fault_handler_restore),
	(_gst_check_fault_handler_sighandler),
	(_gst_check_fault_handler_setup), (gst_check_init):
	* libs/gst/controller/gstcontroller.c:
	(_gst_controller_class_init):
	* libs/gst/controller/gstlfocontrolsource.c:
	(gst_lfo_control_source_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/gstmultiqueue.c: (gst_multi_queue_class_init):
	* plugins/elements/gstqueue.c: (gst_queue_class_init):
	* plugins/elements/gsttee.c: (gst_tee_class_init):
	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_class_init):
	* plugins/indexers/gstfileindex.c: (gst_file_index_class_init):
	Define G_PARAM_STATIC_STRINGS if it's undefined (GLib < 2.13.0) and
	use it everywhere for GParamSpecs that use static strings (i.e. all).
	This gives us less memory usage, fewer allocations and thus less
	memory defragmentation. Fixes bug #523806.

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

	* gst/gstminiobject.c: (gst_value_dup_mini_object),
	(gst_param_spec_mini_object):
	* gst/gstminiobject.h:
	* win32/common/libgstreamer.def:
	* docs/gst/gstreamer-sections.txt:
	API: Add GST_IS_PARAM_SPEC_MINI_OBJECT, GST_PARAM_SPEC_MINI_OBJECT
	GST_TYPE_PARAM_MINI_OBJECT and gst_value_dup_mini_object. Also move
	GstParamSpecMiniObject into a public header for this.

	This make GstMiniObject a bit more consistent with GObject and makes
	it possible to extend the param specs.

	gst_value_dup_mini_object is mainly useful for set_property methods.

	Fixes bug #523798.

	* tools/gst-inspect.c: (print_element_properties_info):
	Print something useful for GstMiniObject properties and not just
	"unknown type".

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gstregistrybinary.c: (gst_registry_binary_initialize_magic),
	(gst_registry_binary_check_magic):
	* gst/gstregistrybinary.h:
	Call the version GST_MAGIC_BINARY_VERSION_STR to be more consistent
	and add it to the (private part) of the docs to fix the build.

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

	* gst/gstregistrybinary.c: (gst_registry_binary_initialize_magic),
	(gst_registry_binary_check_magic),
	(gst_registry_binary_read_cache):
	* gst/gstregistrybinary.h:
	Don't use GST_MAJORMINOR for the binary registry version. Instead
	hardcode a value that must be changed whenever the format changes
	in an incompatible way.
	Also don't GST_ERROR when there is a version mismatch, just
	regenerate the registry silently.

2008-03-21  Jan Schmidt  <jan.schmidt@sun.com>

	* configure.ac:
	Back to development - 0.10.18.1

=== release 0.10.18 ===

2008-03-20  Jan Schmidt <jan.schmidt@sun.com>

	* configure.ac:
	  releasing 0.10.18, "So far away"

2008-03-18  Jan Schmidt  <jan.schmidt@sun.com>

	* configure.ac:
	* win32/common/config.h:
	0.10.17.4 pre-release

2008-03-18  Wim Taymans  <wim.taymans@collabora.co.uk>

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gstpoll.c: (gst_poll_winsock_error_to_errno),
	(gst_poll_update_winsock_event_mask),
	(gst_poll_prepare_winsock_active_sets),
	(gst_poll_collect_winsock_events), (gst_poll_new), (gst_poll_free),
	(gst_poll_add_fd_unlocked), (gst_poll_fd_ctl_write),
	(gst_poll_fd_ctl_read_unlocked), (gst_poll_fd_ignored),
	(gst_poll_fd_has_error), (gst_poll_fd_can_read_unlocked),
	(gst_poll_check_ctrl_commands), (gst_poll_wait):
	* gst/gstpoll.h:
	* win32/common/libgstreamer.def:
	Add new function gst_poll_fd_ignored() for improved Windows
	compatibility.
	Various minor fixes and cleanups. See #520808.

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

	* gst/gstindex.c: (gst_index_entry_free):
	* gst/gstindex.h:
	  Don't free key strings which we don't own. Fixes crash in
	  gst_index_entry_free() (#522741).

	* tests/check/Makefile.am:
	* tests/check/gst/.cvsignore:
	* tests/check/gst/gstindex.c: (test_index_entries),
	  (gst_index_suite), (gst_index):
	  Add unit test for the above.

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

	* win32/common/libgstreamer.def:
	Remove symbols that were removed recently. Fixes bug #521740.

2008-03-11  Jan Schmidt  <jan.schmidt@sun.com>

	* configure.ac:
	* win32/common/config.h:
	0.10.17.3 pre-release

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

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gstpoll.c: (find_index), (gst_poll_free_winsock_event),
	(gst_poll_update_winsock_event_mask), (gst_poll_new),
	(gst_poll_free), (gst_poll_fd_init), (gst_poll_add_fd_unlocked),
	(gst_poll_remove_fd), (gst_poll_fd_ctl_write),
	(gst_poll_fd_ctl_read_unlocked), (gst_poll_fd_has_closed),
	(gst_poll_fd_has_error), (gst_poll_fd_can_read_unlocked),
	(gst_poll_fd_can_write), (gst_poll_wait),
	(gst_poll_set_controllable), (gst_poll_restart),
	(gst_poll_set_flushing):
	* gst/gstpoll.h:
	* libs/gst/net/gstnetclientclock.c: (gst_net_client_clock_new):
	* libs/gst/net/gstnettimeprovider.c: (gst_net_time_provider_start),
	(gst_net_time_provider_new):
	* plugins/elements/gstfdsink.c: (gst_fd_sink_start):
	* plugins/elements/gstfdsrc.c: (gst_fd_src_start):
	* tests/benchmarks/gstpollstress.c: (main):
	* tests/check/gst/gstpoll.c: (GST_START_TEST), (gst_poll_suite):
	Remove GstPollMode from the API, it does not make sense to let the
	application control this.
	Add support for Win32.
	Fix the testsuite. Fixes #520671.

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

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

	* gst/gstregistrybinary.c:
	Include io.h for write() and close() when building with MSVC. Fixes
	bug #520877.

2008-03-07  Stefan Kost  <ensonic@users.sf.net>

	* configure.ac:
	* gst/gst_private.h:
	* gst/gstconfig.h.in:
	* gst/gstregistry.h:
	* gst/gstregistrybinary.c:
	* win32/common/gstconfig.h:
	  Move registry backend API to private headers where we can. Add
	  fixme-0.11 comments for the others. Add stubs for the xml backend when
	  using the binary to ensure they functions exists (they should not be
	  used though). Fixes #520756.

2008-03-04  Jan Schmidt  <jan.schmidt@sun.com>

	* configure.ac:
	* win32/common/config.h:
	0.10.17.2 prelease

2008-03-03  Edward Hervey  <edward.hervey@collabora.co.uk>

	* gst/gstregistrybinary.c: (gst_registry_binary_write),
	(gst_registry_binary_read_cache):
	* gst/gstregistryxml.c: (gst_registry_save):
	* gst/gsturi.c: (unescape_string), (gst_uri_has_protocol):
	* plugins/elements/gstfilesink.c: (gst_file_sink_open_file):
	* plugins/elements/gstfilesrc.c: (gst_file_src_map_region),
	(gst_file_src_map_small_region), (gst_file_src_create_mmap):
	Switch to using portabl gsize/gssize instead of size_t/ssize_t
	Fixes #520152

2008-03-03  Edward Hervey  <edward.hervey@collabora.co.uk>

	* gst/gstminiobject.c:
	Import gst_private.h before any other header that might include other
	glib headers. This fixes the build on windows using native compilers.

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

	* win32/common/gstconfig.h:
	  Add here too, just for completeness.

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

	* configure.ac:
	* gst/gstconfig.h.in:
	* gst/gstregistry.h:
	  Fix broken use of config.h-defined preprocessor directive in a public
	  header file. Add a corresponding define to gstconfig.h, since we can't
	  really remove those function declarations from the header file now
	  (or can we? and why are they there in the first place?).

2008-03-03  Andy Wingo  <wingo@pobox.com>

	* tests/check/gst/gststructure.c (GST_START_TEST): Add a check for
	the new warning.

	* gst/gststructure.c (gst_structure_from_string): Warn if
	structure_from_string didn't consume the whole string, but the
	caller did not provide an end pointer.

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

	Patch by: Fabrizio Gennari <fabrizio.ge at tiscali it>

	* gst/gstregistryxml.c: (read_string), (load_feature):
	  Strings allocated by libxml2 should be freed with xmlFree(), not
	  with g_free(). Fixes issues on windows in certain contexts (#519698).

2008-02-29  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstinterface.c: (gst_element_implements_interface):
	  Don't crash if the element supports the interface queried, but does
	  not implement GstImplementsInterface. Fixes #519584.

	* tests/check/Makefile.am:
	* tests/check/gst/.cvsignore:
	* tests/check/gst/gstinterface.c:
	  Add unit test for the above.

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

	* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init):
	Small doc update.

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

	* gst/gstsegment.c: (gst_segment_set_seek),
	(gst_segment_to_stream_time):
	Improve some comment.
	Update variables where it makes more sense.

2008-02-29  Rene Stadler  <mail@renestadler.de>

	* gst/gsturi.c: (gst_uri_handler_get_protocols):
	Use the get_protocols_full vfunc if get_protocols is NULL.  Fixes
	URIHandlers implemented using language bindings.

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

	* gst/gstelementfactory.h:
	* tests/check/elements/fakesink.c:
	* tests/check/elements/fakesrc.c: (setup_fakesrc):
	* tests/check/elements/fdsrc.c: (setup_fdsrc):
	* tests/check/elements/filesink.c: (setup_filesink):
	* tests/check/elements/filesrc.c: (setup_filesrc):
	* tests/check/elements/identity.c: (setup_identity):
	* tests/check/elements/tee.c:
	* tests/check/generic/sinks.c:
	* tests/check/generic/states.c: (setup), (teardown):
	* tests/check/gst/gst.c:
	* tests/check/gst/gstabi.c:
	* tests/check/gst/gstbin.c:
	* tests/check/gst/gstbus.c: (pull_messages):
	* tests/check/gst/gstcaps.c:
	* tests/check/gst/gstelement.c:
	* tests/check/gst/gstevent.c:
	* tests/check/gst/gstghostpad.c:
	* tests/check/gst/gstiterator.c:
	* tests/check/gst/gstmessage.c:
	* tests/check/gst/gstminiobject.c: (my_foo_init):
	* tests/check/gst/gstobject.c: (thread_name_object),
	(gst_object_suite):
	* tests/check/gst/gstpad.c:
	* tests/check/gst/gstplugin.c:
	* tests/check/gst/gstpoll.c:
	* tests/check/gst/gstquery.c:
	* tests/check/gst/gstsegment.c:
	* tests/check/gst/gststructure.c:
	* tests/check/gst/gstsystemclock.c:
	* tests/check/gst/gsttask.c:
	* tests/check/gst/gstutils.c:
	* tests/check/gst/gstvalue.c:
	* tests/check/gst/struct_hppa.h:
	* tests/check/gst/struct_i386.h:
	* tests/check/gst/struct_ppc32.h:
	* tests/check/gst/struct_ppc64.h:
	* tests/check/gst/struct_x86_64.h:
	* tests/check/libs/adapter.c: (create_and_fill_adapter):
	* tests/check/libs/basesrc.c:
	* tests/check/libs/controller.c: (GST_START_TEST):
	* tests/check/libs/gdp.c:
	* tests/check/libs/gstnetclientclock.c:
	* tests/check/libs/gstnettimeprovider.c:
	* tests/check/libs/libsabi.c:
	* tests/check/libs/struct_hppa.h:
	* tests/check/libs/struct_i386.h:
	* tests/check/libs/struct_ppc32.h:
	* tests/check/libs/struct_ppc64.h:
	* tests/check/libs/struct_x86_64.h:
	* tests/check/pipelines/cleanup.c:
	* tests/check/pipelines/simple-launch-lines.c:
	* tests/check/pipelines/stress.c:
	And correct even more valid sparse warnings.

	* win32/common/libgstreamer.def:
	Add gst_poll_fd_init to the list of symbols.

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

	* gst/gstconfig.h.in:
	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_read_buffer):
	* libs/gst/check/gstcheck.c: (gst_check_log_message_func),
	(gst_check_log_critical_func), (gst_check_drop_buffers),
	(gst_check_element_push_buffer_list):
	* libs/gst/controller/gstcontroller.c: (gst_controller_get),
	(gst_controller_get_type):
	* libs/gst/controller/gsthelper.c: (gst_object_control_properties),
	(gst_object_get_controller), (gst_object_get_control_source):
	* libs/gst/controller/gstinterpolationcontrolsource.c:
	(gst_interpolation_control_source_new):
	* libs/gst/controller/gstlfocontrolsource.c:
	(gst_lfo_control_source_new):
	* libs/gst/dataprotocol/dataprotocol.c:
	(gst_dp_event_from_packet_0_2):
	* plugins/elements/gstfdsrc.c:
	* plugins/elements/gstmultiqueue.c:
	* plugins/elements/gsttee.c:
	* plugins/elements/gsttypefindelement.c:
	* plugins/indexers/gstfileindex.c: (_file_index_id_save_xml),
	(gst_file_index_add_association):
	* plugins/indexers/gstmemindex.c:
	* tests/benchmarks/gstpollstress.c: (mess_some_more):
	* tests/check/elements/queue.c: (setup_queue):
	* tests/check/gst/gstpipeline.c:
	* tests/check/libs/collectpads.c: (setup), (teardown),
	(gst_collect_pads_suite):
	* tests/examples/adapter/adapter_test.c:
	* tests/examples/metadata/read-metadata.c: (make_pipeline):
	* tests/examples/xml/createxml.c:
	* tests/examples/xml/runxml.c:
	* tools/gst-inspect.c:
	* tools/gst-run.c:
	Correct all relevant warnings found by the sparse semantic code
	analyzer. This include marking several symbols static, using
	NULL instead of 0 for pointers, not using variable sized arrays
	on the stack, moving variable declarations to the beginning of
	a block and using "foo (void)" instead of "foo ()" for declarations.

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

	* plugins/elements/gstfdsink.c: (gst_fd_sink_update_fd):
	* plugins/elements/gstfdsrc.c: (gst_fd_src_update_fd):
	Don't reset GstPollFDs, this is not necessary at all.

	* tests/check/gst/gstpoll.c: (test_poll_wait), (GST_START_TEST),
	(delayed_restart), (delayed_control):
	Use GST_POLL_FD_INIT.

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

	* gst/gstpoll.c: (gst_poll_fd_init):
	* gst/gstpoll.h:
	Added Since tags.

	* plugins/elements/gstfdsink.c: (gst_fd_sink_update_fd):
	Use some more init macros.

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

	* plugins/elements/gstfdsink.c: (gst_fd_sink_start):
	* plugins/elements/gstfdsrc.c: (gst_fd_src_update_fd):
	Use init macros and functions.

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

	* docs/gst/gstreamer-sections.txt:
	* gst/gstpoll.c: (gst_poll_fd_init):
	* gst/gstpoll.h:
	Add INIT macro and _init method for initializing the GstPollFD.

2008-02-28  Sebastian Dröge  <slomo@circular-chaos.org>

	* plugins/elements/gstfdsink.c: (gst_fd_sink_start),
	(gst_fd_sink_update_fd):
	* plugins/elements/gstfdsrc.c: (gst_fd_src_update_fd):
	* tests/check/gst/gstpoll.c: (test_poll_wait), (GST_START_TEST),
	(delayed_restart), (delayed_control):
	Initialize some uninitialized variables as spotted by valgrind.

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

	* tests/benchmarks/Makefile.am:
	* tests/benchmarks/gstpollstress.c: (mess_some_more), (run_test),
	(main):
	Add poll stress test.

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

	Patch by: Peter Kjellerstedt <pkj at axis dot com>

	* plugins/elements/gstfdsink.c: (gst_fd_sink_render),
	(gst_fd_sink_start), (gst_fd_sink_stop), (gst_fd_sink_unlock),
	(gst_fd_sink_unlock_stop), (gst_fd_sink_update_fd):
	* plugins/elements/gstfdsink.h:
	* plugins/elements/gstfdsrc.c: (gst_fd_src_update_fd),
	(gst_fd_src_start), (gst_fd_src_stop), (gst_fd_src_unlock),
	(gst_fd_src_unlock_stop), (gst_fd_src_create),
	(gst_fd_src_uri_set_uri):
	* plugins/elements/gstfdsrc.h:
	Port to GstPoll. See #505417.

2008-02-27  Jan Schmidt  <jan.schmidt@sun.com>

	* win32/common/libgstreamer.def:
	Add new gst_poll_ symbols to win32 defs.

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

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/net/gstnetclientclock.c:
	(gst_net_client_clock_class_init), (gst_net_client_clock_init),
	(gst_net_client_clock_finalize), (gst_net_client_clock_do_select),
	(gst_net_client_clock_thread), (gst_net_client_clock_start),
	(gst_net_client_clock_stop), (gst_net_client_clock_new):
	* libs/gst/net/gstnetclientclock.h:
	* libs/gst/net/gstnettimeprovider.c:
	(gst_net_time_provider_class_init), (gst_net_time_provider_init),
	(gst_net_time_provider_finalize), (gst_net_time_provider_thread),
	(gst_net_time_provider_start), (gst_net_time_provider_stop),
	(gst_net_time_provider_new):
	* libs/gst/net/gstnettimeprovider.h:
	Use a private stuct to not break ABI.

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

	Patch by: Peter Kjellerstedt <pkj at axis dot com>

	* libs/gst/net/gstnetclientclock.c: (gst_net_client_clock_init),
	(gst_net_client_clock_finalize), (gst_net_client_clock_do_select),
	(gst_net_client_clock_thread), (gst_net_client_clock_start),
	(gst_net_client_clock_stop), (gst_net_client_clock_new):
	* libs/gst/net/gstnetclientclock.h:
	* libs/gst/net/gstnettimeprovider.c: (gst_net_time_provider_init),
	(gst_net_time_provider_finalize), (gst_net_time_provider_thread),
	(gst_net_time_provider_start), (gst_net_time_provider_stop),
	(gst_net_time_provider_new):
	* libs/gst/net/gstnettimeprovider.h:
	Massive code removal and cleanups because of GstPoll.
	Fixes #505417.

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

	* configure.ac:
	Add checks for poll, ppoll and pselect.

	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	Add docs for GstPoll.

	* gst/Makefile.am:
	* gst/gst.h:
	* gst/gstpoll.c: (find_index), (selectable_fds),
	(pollable_timeout), (choose_mode), (pollfd_to_fd_set),
	(fd_set_to_pollfd), (gst_poll_new), (gst_poll_free),
	(gst_poll_set_mode), (gst_poll_get_mode),
	(gst_poll_add_fd_unlocked), (gst_poll_add_fd),
	(gst_poll_remove_fd), (gst_poll_fd_ctl_write),
	(gst_poll_fd_ctl_read_unlocked), (gst_poll_fd_ctl_read),
	(gst_poll_fd_has_closed), (gst_poll_fd_has_error),
	(gst_poll_fd_can_read_unlocked), (gst_poll_fd_can_read),
	(gst_poll_fd_can_write), (gst_poll_wait),
	(gst_poll_set_controllable), (gst_poll_restart),
	(gst_poll_set_flushing):
	* gst/gstpoll.h:
	Add generic poll abstraction. We ideally don't want to have this in core
	here but in glib intead...
	This code will be used in various network elements and ultimately for
	the nanosecond precision monotonic clock (that's why it's here in core).
	It'll allow us to implement cancelable socket operations for windows too.

	* tests/check/Makefile.am:
	* tests/check/gst/gstpoll.c: (test_poll_wait), (GST_START_TEST),
	(delayed_stop), (delayed_restart), (delayed_flush),
	(delayed_control), (gst_poll_suite):
	Add GstPoll unit test.

2008-02-25  Tim-Philipp Müller  <tim at centricular dot net>

	* gst/gstfilter.c:
	  Improve documentation of gst_filter_run(). Fixes #518627.

2008-02-23  Tim-Philipp Müller  <tim at centricular dot net>

	* docs/README:
	  Add a few lines about the new 'check-inspected-versions' target.

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

	* tests/check/gst/gstevent.c:
	  Add qos to the event test. Rename tcase/tsuite; is not only about
	  custom events.

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

	* plugins/elements/gstqueue.c:
	  Ensure that buffer metadata is writeable, before modifying. Spotted by
	  Mike.

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

	* plugins/elements/gstqueue.c:
	* plugins/elements/gstqueue.h:
	  When dropping buffers in leaky modes, mark next buffers we sent as
	  DISCONT.

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

	* plugins/elements/gstfilesrc.c: (gst_file_src_map_region):
	  Also, if mmap() fails that would be a READ error, not OPEN_READ.

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

	* plugins/elements/Makefile.am:
	* plugins/elements/gstbufferstore.c:
	* plugins/elements/gstbufferstore.h:
	* plugins/elements/gsttypefindelement.h:
	  Remove GstBufferStore, no idea why we were still building it.
	  It's not used anywhere and superseded by GstAdapter.

	* plugins/elements/gstfilesrc.c: (gst_file_src_map_region),
	  (gst_file_src_create_mmap):
	* plugins/indexers/gstfileindex.c: (gst_file_index_add_association):
	  Printf format fixes for 64-bit integers.

2008-02-19  Sebastian Dröge  <slomo@circular-chaos.org>

	* configure.ac:
	Don't set GST_CACHE_DIR and allow to set it by a configure parameter.
	We're not in 0.8 times anymore.

2008-02-19  Jan Schmidt  <Jan.Schmidt@sun.com>

	* libs/gst/check/gstcheck.c: (gst_check_drop_buffers),
	(gst_check_element_push_buffer_list):
	* libs/gst/check/gstcheck.h:
	Make the declaration in the header for
	gst_check_element_push_buffer_list match the implementation.

	Fix up spelling, grammar and wording of the documentation in a few
	places, and add the Since keyword to new API functions.
	Use g_list_delete_link instead of g_list_remove in
	gst_check_drop_buffers, since it's immeasurably more efficient.

	* tests/check/elements/fakesrc.c: (GST_START_TEST):
	Use new gst_check_drop_buffers function where appropriate.

	* win32/common/libgstbase.def:
	* win32/common/libgstreamer.def:
	Add new symbols gst_collect_pads_take_buffer, 
	gst_collect_pads_read_buffer, gst_index_set_resolver_full to the
	exports

	Changelog surgery to add API keyword to new gst_check API.

2008-02-19  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/parse/lex._gst_parse_yy.pre.c: (yy_get_next_buffer),
	(_gst_parse_yyensure_buffer_stack), (_gst_parse_yylex_init_extra):
	Update pre-generated flex files with flex 2.3.34.

2008-02-19  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstminiobject.c:
	  Add FIXME for 0.11 to make GstMiniObjectClass::copy() a bit more
	  friendly to subclasses and not require them to know all internals
	  of their parent class.

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

	* docs/libs/gstreamer-libs-sections.txt:
	* libs/gst/base/gstcollectpads.c:
	* libs/gst/base/gstcollectpads.h:
	  Add sub-buffer functions to collectpads. Fixes #516187.
	  API: gst_collect_pads_take_buffer(), gst_collect_pads_read_buffer()

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

	* gst/gstbuffer.c:
	  Copy selected buffer-flags when creating subbuffers.
	  Fixes #516395.

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

	* gst/gstbuffer.c: (gst_buffer_class_init), (gst_buffer_finalize):
	* gst/gstevent.c: (gst_event_class_init), (gst_event_finalize):
	* gst/gstmessage.c: (gst_message_class_init),
	(gst_message_finalize):
	* gst/gstquery.c: (gst_query_class_init), (gst_query_finalize):
	* plugins/elements/gstfilesrc.c: (gst_mmap_buffer_class_init),
	(gst_mmap_buffer_finalize):
	Properly chain up finalize functions to the parent class.

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

	Patch by: Siavash Safi <siavash dot safi at gmail dot com>

	* gst/gstindex.c: (gst_index_finalize), (gst_index_set_resolver),
	(gst_index_set_resolver_full):
	* gst/gstindex.h:
	Add new function with option to dispose of user_data in resolver.
	Actually call the dispose function when finalizing the object and not
	just when changing the resolver/filter.
	API: GstIndex::gst_index_set_resolver_full()

	* docs/gst/gstreamer-sections.txt:
	Add new function to docs. Fixes #515469.

2008-02-11  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstindex.c: (gst_index_finalize):
	Chain up finalize to the parent class. Fixes leaking the GstObject
	name and other things.

2008-02-08  Jan Schmidt  <jan.schmidt@sun.com>

	* configure.ac:
	Make DISABLE_DEPRECATED defined *only* during CVS, not during
	pre-releases or releases.

	* docs/faq/gst-uninstalled:
	Add gst-plugins-gl

	* docs/random/release:
	Change one of the steps - we only upload core & base to Gnome FTP

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

	* gst/gstconfig.h.in:
	  Add 'id' for example.

	* gst/gstpad.c:
	* gst/gstutils.c:
	* plugins/elements/gstfdsink.c:
	  Link to signals. Doc and comment fixes.

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

	* gst/gstpad.h: (GST_PAD_LINK_SUCCESSFUL):
	* gst/gstpluginfeature.h: (GstPluginFeatureClass):
	  Some minor docs fixes: fix typo, mention that GST_FLOW_RESEND is
	  unused and unimplemented; finally, it is plugin features, not
	  plugins, that have ranks.
	  
2008-02-05  Stefan Kost  <ensonic@users.sf.net>

	* gst/gstpluginfeature.h:
	  Clarify GstRank range docs.

2008-02-05  David Schleef  <ds@schleef.org>

	* gst/gst.c: Add a separate gst_deinitialized that prevents
	  gst_init() from being called after gst_deinit().  Fixes #509559

2008-02-05  Sebastian Dröge  <slomo@circular-chaos.org>

	* gst/gstbin.c: (gst_bin_get_type), (gst_bin_base_init),
	(gst_bin_class_init):
	* gst/gstelement.c: (gst_element_base_class_init),
	(gst_element_class_add_pad_template):
	* gst/gstpadtemplate.c: (gst_pad_template_init):
	* gst/gstpipeline.c: (gst_pipeline_get_type),
	(gst_pipeline_base_init), (gst_pipeline_class_init):
	* libs/gst/base/gstbasesink.c:
	* libs/gst/base/gstbasesrc.c: (gst_base_src_get_type),
	(gst_base_src_base_init), (gst_base_src_class_init):
	* plugins/elements/gstcapsfilter.c: (gst_capsfilter_base_init),
	(gst_capsfilter_class_init):
	* plugins/elements/gstfakesink.c: (gst_fake_sink_base_init),
	(gst_fake_sink_class_init):
	* plugins/elements/gstfakesrc.c: (gst_fake_src_base_init),
	(gst_fake_src_class_init):
	* plugins/elements/gstfdsink.c: (gst_fd_sink_base_init),
	(gst_fd_sink_class_init):
	* plugins/elements/gstfdsrc.c: (gst_fd_src_base_init),
	(gst_fd_src_class_init):
	* plugins/elements/gstfilesink.c: (gst_file_sink_base_init),
	(gst_file_sink_class_init):
	* plugins/elements/gstfilesrc.c: (gst_file_src_base_init),
	(gst_file_src_class_init):
	* plugins/elements/gstidentity.c: (gst_identity_base_init),
	(gst_identity_class_init):
	* plugins/elements/gstmultiqueue.c: (gst_multi_queue_base_init),
	(gst_multi_queue_class_init):
	* plugins/elements/gstqueue.c: (gst_queue_base_init),
	(gst_queue_class_init):
	* plugins/elements/gsttee.c: (gst_tee_base_init),
	(gst_tee_class_init):
	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_base_init),
	(gst_type_find_element_class_init):
	* tests/check/gst/gstelement.c: (gst_element_suite):
	Revert previous changes to the behaviour of GstPadTemplates, etc
	and the possiblity to call them in class_init as it breaks too
	many elements. Reopens bug #491501.

	Should be applied again for 0.11, thus added a few FIXME 0.11 at
	several places.

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

	* tools/gst-launch.c:
	Dump one graph per pipeline state-change and state change name
	(if GST_DEBUG_DUMP_DOT_DIR is set).

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

	* gst/gstpad.c:
	* tests/check/gst/gstpad.c:
	Be sure that we have a new copy of the caps and not
	reffed caps from a template

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

	* gst/gstbin.c: (gst_bin_get_type), (gst_bin_class_init):
	* gst/gstpipeline.c: (gst_pipeline_get_type),
	(gst_pipeline_class_init):
	* libs/gst/base/gstbasesink.c: (gst_base_sink_get_type),
	(gst_base_sink_class_init):
	* libs/gst/base/gstbasesrc.c: (gst_base_src_get_type),
	(gst_base_src_class_init):
	* libs/gst/base/gstbasetransform.c: (gst_base_transform_get_type),
	(gst_base_transform_class_init):
	* libs/gst/base/gstcollectpads.c: (gst_collect_pads_base_init),
	(gst_collect_pads_class_init):
	* libs/gst/base/gstdataqueue.c: (gst_data_queue_get_type):
	* libs/gst/net/gstnettimeprovider.c:
	(gst_net_time_provider_base_init),
	(gst_net_time_provider_class_init):
	* plugins/elements/gstcapsfilter.c: (gst_capsfilter_base_init),
	(gst_capsfilter_class_init):
	* plugins/elements/gstfakesink.c: (gst_fake_sink_base_init),
	(gst_fake_sink_class_init):
	* plugins/elements/gstfakesrc.c: (gst_fake_src_base_init),
	(gst_fake_src_class_init):
	* plugins/elements/gstfdsink.c: (gst_fd_sink_base_init),
	(gst_fd_sink_class_init):
	* plugins/elements/gstfdsrc.c: (gst_fd_src_base_init),
	(gst_fd_src_class_init):
	* plugins/elements/gstfilesink.c: (gst_file_sink_base_init),
	(gst_file_sink_class_init):
	* plugins/elements/gstfilesrc.c: (gst_file_src_base_init),
	(gst_file_src_class_init):
	* plugins/elements/gstidentity.c: (gst_identity_base_init),
	(gst_identity_class_init):
	* plugins/elements/gstmultiqueue.c: (gst_multi_queue_base_init),
	(gst_multi_queue_class_init):
	* plugins/elements/gstqueue.c: (gst_queue_base_init),
	(gst_queue_class_init):
	* plugins/elements/gsttee.c: (gst_tee_base_init),
	(gst_tee_class_init):
	* plugins/elements/gsttypefindelement.c:
	(gst_type_find_element_base_init),
	(gst_type_find_element_class_init):
	Don't use base_init where not absolutely necessary. For example it's
	not necessary anymore for adding pad templates or setting element
	details.

	Leave empty base_init functions in several places as GST_BOILERPLATE
	still defines and uses them.

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

	* gst/gstelement.c: (gst_element_base_class_init),
	(gst_element_class_add_pad_template):
	* gst/gstpadtemplate.c:
	Make it possible (and recommended) to set element details and add
	pad templates in the class_init functions by copying the details/pad
	templates in GstElement's base_init.

	Also make it possible to replace existing pad templates by adding
	a new one with the same name. This was done in a hackish fashion
	in same elements before already.

	Don't reference pad templates that are added a second time. A
	new pad template has a refcount of one and is not floating anymore
	and to be owned by the element's class. Make this more explicit by
	mentioning it in the docs of gst_element_class_add_pad_template().

	These changes are backwards compatible. Fixes bug #491501.

	* tests/check/gst/gstelement.c:
	Add unit test for setting element details, adding pad templates and
	replacing them in a subclass.

2008-02-02  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-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
	API: gst_check_drop_buffers
	API: gst_check_caps_equal
	API: gst_check_element_push_buffer_list
	API: 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). Fixes #509391.

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 Torra 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 Torra 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 Torra 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 Torra 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 Torra 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
