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

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

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

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

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

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

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

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

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

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

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

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

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

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

	submitted by: Peter Astakhov

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* configure.ac:
	  back to HEAD

=== release 0.8.9 ===

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

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

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

	submitted by: Clytie Siddall

	* po/vi.po: Added Vietnamese translation

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

	patch by: Tim Philipp-Müller

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* gst/gstvalue.c: Add some documentation

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* configure.ac:
	  back to HEAD

=== release 0.8.8 ===

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

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

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

	* configure.ac:
	  second prerelease

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

	patch by: Wim Taymans

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* autogen.sh:
	  remove patch if autopoint fails

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	reviewed by: Wim Taymans, Ronald Bultje.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* configure.ac:
	  bump nano to cvs

=== release 0.8.7 ===

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

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

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

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

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

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

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

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

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

	* configure.ac:
	  bump nano to cvs

=== release 0.8.6 ===

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

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

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

	* configure.ac:
	  prerel bump

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

	patch by: Steve Lhomme

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

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

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

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

	patch by: Ronald Bultje

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

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

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

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

	* win32/dirent.c:
	  fix a memory leak

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

	* configure.ac:
	  bump for prerelease

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* configure.ac: bump nano to cvs

=== release 0.8.5 ===

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* po/uk.po:
	  updated translation

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* win32/config.h:
	  update the version number

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* configure.ac: back to cvs

=== release 0.8.4 ===

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

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

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

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

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

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

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

	patch by: David Moore

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

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

	patch by: Wim Taymans

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

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

	patch by: Benjamin Otte

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

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

	patch by: Wim Taymans

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        * docs/manual/states.xml: Grammar fix

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

	* docs/manual/pads.xml: Grammar fix

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

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

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

	* docs/manual/goals.xml: Grammar fix

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

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

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

	* docs/manual/motivation.xml: Fix spelling

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* testsuite/Rules:
	  change path

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* win32/:
          enable more debug code in DEBUG build

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	reviewed by Benjamin Otte  <otte@gnome.org>

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

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

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

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

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

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

	reviewed by Benjamin Otte  <otte@gnome.org>

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

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

	reviewed by Benjamin Otte  <otte@gnome.org>

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

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

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

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

	* configure.ac:
	  bump nano to cvs

=== release 0.8.3 ===

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

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

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

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

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

	* configure.ac:
	  bump nano to cvs

=== release 0.8.2 ===

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

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

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

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

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

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

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

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

	* gst/schedulers/gstoptimalscheduler.c: (add_to_chain),
	(remove_from_chain), (chain_group_set_enabled),
	(setup_group_scheduler), (group_element_set_enabled),
	(gst_opt_scheduler_state_transition), (gst_opt_scheduler_iterate),
	(gst_opt_scheduler_show):
	Elements without a group can do a state change as well, just wait
	with the setup of the scheduling function when it is added to a
	chain.

2004-05-27  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (add_to_chain),
	(remove_from_chain), (chain_group_set_enabled), (add_to_group),
	(merge_groups), (setup_group_scheduler),
	(group_inc_links_for_element), (gst_opt_scheduler_iterate),
	(gst_opt_scheduler_show):
	Fixes to maintain internal consistency of the scheduler data
	structures. 
	 - adding an enabled group to a chain should increment the
	   number of enabled elements in that chain.
         - removing an enabled group from a chain could disable the
	   chain.
	 - removing a disabled group from a chain could enable the
	   chain.
	 - add g_assert when internal inconsistency is detected.
	 - adding an element to a group could increase the number of
	   links this group has with other groups.
	 - merging two groups also merges the chains.
	 - also show group links in the _show method.
	   

2004-05-25  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstcaps.c: (gst_caps_structure_simplify):
	  don't print error messages when there is no error
	* gst/gstvalue.c: (gst_value_compare_int_range):
	  compare the second value, too
	* testsuite/caps/Makefile.am:
	* testsuite/caps/random.c: (assert_on_error), (main):
	  add tests to make sure the two things above are checked for

2004-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* libs/gst/dataprotocol/Makefile.am:
	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_packet_from_caps):
	* libs/gst/dataprotocol/dataprotocol.h:
          wrap header in GST_ENABLE_NEW.  make code use it

2004-05-23  Johan Dahlin  <johan@gnome.org>

	* tools/gst-inspect.c (main): Cleanup most parts of it, don't be
	so verbose and print GstElement signal names all the time.

2004-05-22  David Schleef  <ds@schleef.org>

	* gst/registries/gstxmlregistry.c:
	(gst_xml_registry_parse_padtemplate): Fix warning on OS X.
	(bug #142957)

2004-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  scrub cflags for glib2 so gcc doesn't complain when glib is in
	  /usr/local

2004-05-21  Johan Dahlin  <johan@gnome.org>

	* gst/gstcpu.c (gst_cpuid_i386): Protect some gcc asm stuff with
	__GNUC__, patch from Brian Cameron, fixes bug #142804

2004-05-20  David Schleef  <ds@schleef.org>

	* gst/gstindex.c: (gst_index_compare_func): Fix overflows in
	comparison code.  (bug #142819)

2004-05-20  Wim Taymans  <wim@fluendo.com>

	* gst/gstbuffer.c: (gst_buffer_default_copy):
	* gst/gstbuffer.h:
	Added Comment to a flag.
	copy relevant flags in _buffer_copy.

2004-05-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	reviewed by: Wim Taymans <wim at fluendo dot com>

	* gst/gstbuffer.h:
          add GST_BUFFER_IN_CAPS buffer flag
	* gst/gststructure.c: (gst_structure_value_get_generic_type),
	(gst_structure_parse_any_list), (gst_structure_parse_list),
	(gst_structure_parse_fixed_list), (gst_structure_parse_value):
	* gst/gstvalue.c: (gst_value_serialize_any_list),
	(gst_value_transform_any_list_string),
	(gst_value_list_prepend_value), (gst_value_list_append_value),
	(gst_value_list_get_size), (gst_value_list_get_value),
	(gst_value_transform_list_string),
	(gst_value_transform_fixed_list_string),
	(gst_value_serialize_list), (gst_value_serialize_fixed_list),
	(gst_value_deserialize_fixed_list), (gst_type_is_fixed),
	(_gst_value_initialize):
	* gst/gstvalue.h:
          add a GST_TYPE_FIXED_LIST which is fixed by definition and uses
          < , > as a format.
	* testsuite/caps/string-conversions.c: (main):
          add regression tests for < >

2004-05-20  Johan Dahlin  <johan@gnome.org>

	* docs/gst/Makefile.am (all-local): Re-add

2004-05-20  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-docs.sgml:
	* docs/libs/Makefile.am:
	* docs/libs/gstreamer-libs-docs.sgml:
          fix distcheck issues

2004-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* libs/gst/dataprotocol/Makefile.am:
          add to autotest

2004-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* libs/gst/dataprotocol/Makefile.am:
	* libs/gst/dataprotocol/dataprotocol.c:
	(gst_dp_header_from_buffer), (gst_dp_packet_from_caps),
	(gst_dp_packet_from_event), (gst_dp_event_from_packet):
	* libs/gst/dataprotocol/dp-private.h:
	  use GST macros to read/write fixed length ints
	  add some more asserts

2004-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/libs/gstreamer-libs-docs.sgml:
	* docs/libs/gstreamer-libs-sections.txt:
	  remove idct and putbits
	* configure.ac:
	* docs/libs/tmpl/gstdataprotocol.sgml:
	* libs/gst/Makefile.am:
	* libs/gst/dataprotocol/Makefile.am:
	* libs/gst/dataprotocol/dataprotocol-test.c: (conversion_test),
	(buffer_test), (caps_test), (event_test), (main):
	* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_crc),
	(gst_dp_dump_byte_array), (gst_dp_init),
	(gst_dp_header_payload_length), (gst_dp_header_payload_type),
	(gst_dp_header_from_buffer), (gst_dp_packet_from_caps),
	(gst_dp_packet_from_event), (gst_dp_buffer_from_header),
	(gst_dp_caps_from_packet), (gst_dp_event_from_packet),
	(gst_dp_validate_header), (gst_dp_validate_payload),
	(gst_dp_validate_packet), (plugin_init):
	* libs/gst/dataprotocol/dataprotocol.h:
	* libs/gst/dataprotocol/dp-private.h:
	  add dataprotocol

2004-05-19  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstvalue.c: (gst_value_deserialize_int_helper):
	  fix int variable deserialization and add a helper so we can actually
	  debug this.

2004-05-18  David Schleef  <ds@schleef.org>

	* testsuite/debug/commandline.c: (main): Call ./commandline, not
	  argv[0].  Calling yourself is probably not the best way to
	  construct a test like this, btw.

2004-05-18  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstbin.c: (gst_bin_iterate_func), (gst_bin_iterate):
	  don't claim to be more intelligent than a scheduler when the
	  scheduler claims the pipeline is stopped
	* gst/schedulers/entryscheduler.c: (safe_cothread_switch),
	(safe_cothread_destroy),
	(gst_entry_scheduler_remove_all_cothreads),
	(gst_entry_scheduler_reset), (_remove_cothread),
	(gst_entry_scheduler_state_transition):
	  hold off cothread destruction if we're not in main cothread
	* configure.ac:
	* testsuite/Makefile.am:
	  add new test dir
	* testsuite/schedulers/.cvsignore:
	* testsuite/schedulers/Makefile.am:
	  add tests
	* testsuite/schedulers/relink.c: (cb_handoff), (main):
	  check relinking and adding/removing elements from a running pipeline
	* testsuite/schedulers/unlink.c: (cb_handoff), (main):
	  check unlinking in a running pipeline
	* testsuite/schedulers/unref.c: (cb_handoff), (main):
	  check unreffing a running pipeline
	* testsuite/schedulers/useless_iteration.c: (main):
	  check iterating a pipeline that contains running threads works

2004-05-18  David Schleef  <ds@schleef.org>

	* docs/gst/Makefile.am: Add all-local target for when HAVE_GTK_DOC
          is false.

2004-05-18  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (remove_from_group),
	(setup_group_scheduler), (gst_opt_scheduler_pad_link):
	Fixed an error introduced with patch for 1.63. When setting
	a get based element as the entry point in a group, make sure
	to mark the group as GET based.

2004-05-18  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (create_group),
	(setup_group_scheduler), (loop_group_schedule_function),
	(gst_opt_scheduler_pad_link):
	Added some more debug info and fixed a bug where the group
	type was set to LOOP but it was in fact unknown.

2004-05-18  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/schedulers/entryscheduler.c: (gst_entry_scheduler_reset):
	  make resetting scheduler work twice in a row

2004-05-18  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstvalue.c: (gst_strtoll), (CREATE_SERIALIZATION),
	(CREATE_USERIALIZATION), (_gst_value_initialize),
	(gst_value_compare_float), (gst_value_serialize_float),
	(gst_value_deserialize_float), (gst_value_compare_enum),
	(gst_value_serialize_enum), (gst_value_deserialize_enum):
	  add serialization and comparison functions for long, int64, enum and
	  float values
	* gst/gstvalue.c: (gst_value_serialize), (gst_value_deserialize):
	  use best serialization function in type hierarchy instead of only a
	  matching one. This is required for enums to work.
	* gst/parse/grammar.y:
	  use gst_caps_deserialize
	* testsuite/parse/Makefile.am:
	  parse1 now works
	* testsuite/parse/parse1.c: (main):
	  remove aggregator check, aggregator is broken, this test works now
	  but fails because of bug #138012
	* testsuite/parse/parse2.c: (main):
	  s/xvideosink/xvimagesink - this test looks a lot like we should
	  disable it

2004-05-13  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstelement.c: (gst_element_class_init):
	  whoops, store the signal id correctly
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_chain_wrapper):
	  detect infinfinfinfinfinf^Cinite loops in chain wrapper when the
	  chain function isn't linked

2004-05-13  Jan Schmidt  <thaytan@mad.scientist.com>
	* configure.ac:
	Add $GST_PKG_CFLAGS back into GST_INT_CFLAGS so I have large file
	support until we decide where the flags should be used
	* gst/elements/gstfilesrc.c: (gst_filesrc_srcpad_query):
	Use GST_FORMAT_BYTES when GST_FORMAT_DEFAULT is passed
	* gst/gstpad.c: (gst_pad_link_call_link_functions):
	Output refused caps in the debug info

2004-05-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstidentity.c: (gst_identity_chain):
          add duration debug
	* gst/gstinfo.c: (gst_debug_log_default):
          add timestamp

2004-05-13  Benjamin Otte  <otte@gnome.org>

	* gst/gstpipeline.c: (gst_pipeline_dispose),
	(gst_pipeline_change_state):
	  call gst_scheduler_reset on dispose (fixes #141416)

2004-05-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/elements/gstfilesrc.c: (gst_filesrc_get_mmap):
	  compute mapsize correctly
	* gst/elements/gstfilesrc.c: (gst_filesrc_get_mmap):
	  use correct datatypes when calling a varargs function
	* gst/elements/gsttypefindelement.c: (stop_typefinding):
	  push a DISCONT event as first thing
	* gst/gst_private.h:
	* gst/gstinfo.c: (_gst_debug_init):
	  remove GST_DATAFLOW debugging category
	* gst/gstbin.c: (gst_bin_iterate):
	  use GST_SCHEDULING category
	* gst/gstpad.c: (gst_pad_get_type), (_invent_event),
	(gst_pad_push), (gst_pad_pull), (gst_pad_call_chain_function),
	(gst_pad_call_get_function):
	  add GST_DATAFLOW to easily track flow of buffers or events.
	* gst/gstqueue.c: (gst_queue_get_type),
	(gst_queue_handle_pending_events), (gst_queue_chain),
	(gst_queue_get), (gst_queue_handle_src_event):
	  use own static debugging category GST_DATAFLOW for dataflow,
	  use DEBUG category for showing which path events go, use LOG
	  category for buffers.

2004-05-10  David Schleef  <ds@schleef.org>

	* docs/gst/gstreamer-sections.txt: Add gst_element_no_more_pads.

2004-05-10  David Schleef  <ds@schleef.org>

	* docs/gst/Makefile.am: Dear gtk-doc, please print out the unused
	symbols, because otherwise we don't know what they are.  Thanks,
	the GStreamer team.
	* gst/registries/gstxmlregistry.c: (make_dir): Remove a spurious ;

2004-05-10  David Schleef  <ds@schleef.org>

	(from Steve Lhomme)
	* win32/Makefile: When using make clean the MS Visual Studio makefiles
	are deleted.  Fix.
	* win32/Makefile.inspect:
	* win32/Makefile.launch:
	* win32/Makefile.register:

2004-05-10  David Schleef  <ds@schleef.org>

	* gst/gstinfo.h: Add missing inline function.
	* gst/gsttrace.c: add include
	* gst/parse/grammar.y: remove unused code
	* gst/registries/gstxmlregistry.c: (make_dir): make mkdir call
	more portable.
	* tools/gst-register.c: wrap unistd.h
	
	More additions/fixes from Steve for the MSVC build.
	* win32/GStreamer.vcproj:
	* win32/Makefile:
	* win32/Makefile.inspect:
	* win32/Makefile.launch:
	* win32/Makefile.register:
	* win32/README.txt:
	* win32/gst-inspect.vcproj:
	* win32/gst-launch.vcproj:
	* win32/gst-register.vcproj:
	* win32/gstbytestream.def:
	* win32/gstbytestream.vcproj:
	* win32/gstconfig.h:
	* win32/gstelements.def:
	* win32/gstelements.vcproj:
	* win32/gstenumtypes.c:
	* win32/gstenumtypes.h:
	* win32/gstoptimalscheduler.def:
	* win32/gstoptimalscheduler.vcproj:
	* win32/gstreamer.def:
	* win32/gstspider.def:
	* win32/gstspider.vcproj:
	* win32/gstversion.h:
	* win32/msvc71.sln:

2004-05-10  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_no_more_pads):
	* gst/gstelement.h:
	  add gst_element_no_more_pads and the "no-more-pads" signal

2004-05-10  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstregistry.c: (gst_registry_add_plugin):
	  refuse to add plugins when a plugin with same name is already
	  registered. Fixes a bunch of "How to remove plugins?" issues.
	  May lead to other problems though, let's test

2004-05-10  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>

	* testsuite/caps/caps_strings : audio/ac3 => audio/x-ac3
	* docs/manual/pads-api.xml : audio/wav => audio/x-wav
	* docs/random/uraeus/gstreamer_and_midi.txt : audio/wav => audio/x-wav

2004-05-09  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tests/Makefile.am: fix am16 issue

2004-05-09  Benjamin Otte  <otte@gnome.org>

	* libs/gst/bytestream/Makefile.am:
	  we should indeed add .c files to makefiles or they won't be built
	  (d'oh)

2004-05-08  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_proxy_fixate):
	  really reduce the set of caps

2004-05-08  Benjamin Otte  <otte@gnome.org>

	* tests/Makefile.am:
	* tests/spidey_bench.c: (handoff), (main):
	  add benchmark to test how long spider needs to create a pipeline

2004-05-08  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_link_unnegotiate):
	  mark links as unengaged when unnegotiating instead of deactivating.
	  This way pads aren't marked as unengaged when going PLAYING=>PAUSED

2004-05-08  Benjamin Otte  <otte@gnome.org>

	* docs/manual/helloworld.xml:
	  s/audiosink/osssink (patch by Patrick Guimond)

2004-05-07  David Schleef  <ds@schleef.org>

	* configure.ac: Make sure GST_INT_CFLAGS is not clobbered,
	since it contains important stuff.

2004-05-07  David Schleef  <ds@schleef.org>

	* testsuite/caps/caps.c: (test3), (main): A check for appending
	ANY caps.

2004-05-07  David Schleef  <ds@schleef.org>

	* common/m4/as-compiler-flag.m4: Properly quote arguments,
	which may contain commas.  Fixes detection of -Wa,-mregnames

2004-05-06  David Schleef  <ds@schleef.org>

	Changes to handle compilers that don't have variadic macro
	support.  In particular, glib headers define some inlines
	that need G_LOG_DOMAIN defined.  Additional fixes for MSVC
	builds.
	* gst/Makefile.am:
	* gst/cothreads.c:
	* gst/elements/gstfdsink.c:
	* gst/elements/gstfdsrc.c:
	* gst/elements/gstfilesink.c:
	* gst/elements/gstfilesrc.c:
	* gst/gst_private.h:
	* gst/gstatomic.c:
	* gst/gstcaps.c: (gst_caps_append):
	* gst/gstcpu.c: (gst_cpuid_i386):
	* gst/gstelement.c:
	* gst/gsterror.c:
	* gst/gstfilter.c:
	* gst/gstinfo.h:
	* gst/gstprobe.c:
	* gst/gstquery.c:
	* gst/gstregistry.c:
	* gst/gststructure.c:
	* gst/gsttaginterface.c:
	* gst/gsttrace.c: (gst_trace_new):
	* gst/gsttrashstack.c:
	* gst/gsturi.c:
	* gst/gstvalue.c:
	* gst/parse/grammar.y:
	* gst/parse/parse.l:
	* tools/gst-inspect.c: (main):
	* tools/gst-launch.c: (main):
	* tools/gst-xmlinspect.c: (PUT_STRING):

2004-05-06  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/elements/gstfilesrc.c: (gst_filesrc_get),
	(gst_filesrc_change_state), (gst_filesrc_srcpad_event):
	* gst/elements/gstfilesrc.h:
	  send NEW_MEDIA events correctly
	* gst/elements/gsttypefindelement.c: (start_typefinding),
	(gst_type_find_element_handle_event):
	  restart typefinding when we get a NEW_MEDIA event
	* gst/gstbin.c: (gst_bin_remove_func), (gst_bin_change_state),
	(gst_bin_dispose):
	  don't die when someone removes elements in callbacks
	* gst/gstelement.c: (gst_element_change_state):
	  improve debugging
	* gst/gstpad.c: (gst_pad_pull), (gst_pad_call_chain_function):
	  we need a NEW_MEDIA event to engage a link
	* gst/gsttrace.c: (gst_trace_new), (gst_alloc_trace_set_flags_all):
	  don't g_print debugging stuff
	* testsuite/caps/simplify.c: (check_caps):

2004-05-04  Benjamin Otte  <otte@gnome.org>

	* gst/parse/grammar.y:
	  use GST_ERROR instead of g_warning, and always throw a GST_ERROR 

2004-05-04  Benjamin Otte  <otte@gnome.org>

	* testsuite/caps/renegotiate.c: (main):
	  improve output in error case

2004-05-04  Benjamin Otte  <otte@gnome.org>

	* gst/parse/grammar.y:
	  fix assert to not trigger when there's no error argument
	* gst/parse/parse.l:
	  fix definition of caps to allow more than two structures
	* testsuite/caps/Makefile.am:
	* testsuite/caps/renegotiate.c: (main):
	  it's sinesrc and works in that case

2004-05-04  Wim Taymans  <wim@fluendo.com>

	* gst/schedulers/gstoptimalscheduler.c: (remove_from_group),
	(group_dec_link), (gst_opt_scheduler_pad_unlink):
	when removing an element from a group, we always need to
	decrement the link count that this group had with other 
	groups through the element.
	added an extra assert to catch inconsistencies when decrementing
	the link count.

2004-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstcompat.sgml:
	* examples/appreader/Makefile.am:
	* examples/cutter/Makefile.am:
	* examples/events/Makefile.am:
	* examples/helloworld/Makefile.am:
	* examples/helloworld2/Makefile.am:
	* examples/launch/Makefile.am:
	* examples/manual/Makefile.am:
	* examples/mixer/Makefile.am:
	* examples/pingpong/Makefile.am:
	* examples/plugins/Makefile.am:
	* examples/queue/Makefile.am:
	* examples/queue2/Makefile.am:
	* examples/queue3/Makefile.am:
	* examples/queue4/Makefile.am:
	* examples/retag/Makefile.am:
	* examples/thread/Makefile.am:
	* examples/typefind/Makefile.am:
	* examples/xml/Makefile.am:
	* gst/Makefile.am:
	* gst/autoplug/Makefile.am:
	* gst/elements/Makefile.am:
	* gst/gstcompat.h:
	* gst/indexers/Makefile.am:
	* gst/parse/Makefile.am:
	* gst/registries/Makefile.am:
	* gst/schedulers/Makefile.am:
	* libs/gst/bytestream/Makefile.am:
	* libs/gst/control/Makefile.am:
	* libs/gst/getbits/Makefile.am:
	* po/af.po:
	* po/az.po:
	* po/en_GB.po:
	* po/fr.po:
	* po/nl.po:
	* po/sr.po:
	* po/sv.po:
	* po/tr.po:
	* po/uk.po:
	* tests/Makefile.am:
	* tests/bufspeed/Makefile.am:
	* tests/instantiate/Makefile.am:
	* tests/memchunk/Makefile.am:
	* tests/muxing/Makefile.am:
	* tests/negotiation/Makefile.am:
	* tests/probes/Makefile.am:
	* tests/sched/Makefile.am:
	* tests/seeking/Makefile.am:
	* tests/threadstate/Makefile.am:
	* testsuite/caps/Makefile.am:
	* testsuite/cleanup/Makefile.am:
	* testsuite/dlopen/Makefile.am:
	* testsuite/dynparams/Makefile.am:
	* testsuite/plugin/Makefile.am:
	* testsuite/states/Makefile.am:
	* tools/Makefile.am:
          reorganize compile/link flags to be consistent
          put gst_info in gstcompat.h and actually use GST_DISABLE_DEPRECATED

2004-05-04  David Schleef  <ds@schleef.org>

	The "once more, with feeling" check-in.
	* testsuite/caps/Makefile.am: dist caps_strings
	* testsuite/caps/renegotiate.c: (main): This test triggers a
	  segfault in the core.  Marking as failing.

2004-05-03  David Schleef  <ds@schleef.org>

	* testsuite/caps/deserialize.c: (main): Fix problems noticed
	  by the build bots.
	* testsuite/caps/renegotiate.c: (main): Same.

2004-05-03  David Schleef  <ds@schleef.org>

	* testsuite/caps/renegotiate.c: (my_fixate), (main): Another test.

2004-05-03  David Schleef  <ds@schleef.org>

	* testsuite/caps/deserialize.c: (main): Use the srcdir environment
	  variable to find our source file.

2004-05-03  David Schleef  <ds@schleef.org>

	* configure.ac:  Link plugins with libgstreamer and dependent
	  libraries
	* testsuite/caps/Makefile.am:
	* testsuite/caps/caps_strings:
	* testsuite/caps/deserialize.c: (main): Add a little test to slog
	  through a file of caps strings and test each one

2004-05-04  Benjamin Otte  <otte@gnome.org>

	* libs/gst/bytestream/Makefile.am:
	* libs/gst/bytestream/adapter.c: 
	* libs/gst/bytestream/adapter.h:
	  add GstAdapter, similar to bytestream, but doesn't require ugly event
	  handling or uglier loopbased elements

2004-05-03  David Schleef  <ds@schleef.org>

	* testsuite/caps/Makefile.am: Fix spelling of Ηρατοσθενες
	* testsuite/caps/erathostenes.c:
	* testsuite/caps/eratosthenes.c: (eratosthenes), (main):

2004-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/pwg/pwg.xml:
          remove hardcoded stylesheet path (duh)
	* docs/random/release:
	* docs/gst/gstreamer-sections.txt:
	* gst/Makefile.am:
	* gst/gst.h:
	* gst/gst_private.h:
	* gst/gstcaps.c:
	* gst/gstevent.c:
	* gst/gstformat.c:
	* gst/gstinfo.c:
	* gst/gstinfo.h:
	* gst/gstinterface.c:
	* gst/gstmemchunk.c:
	* gst/gstprobe.c:
	* gst/gstquery.c:
	* gst/gstregistry.c:
	* gst/gstregistrypool.c:
	* gst/gststructure.c:
	* gst/gsttaginterface.c:
	* gst/gstthread.c:
	* gst/gsttrace.c:
	* gst/gsttypefind.c: (gst_type_find_factory_get_type):
	* gst/gsturi.c:
	* gst/gstvalue.c:
          deprecate gst_info; remove gstlog.h
   

2004-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am:
	* po/en_GB.po:
	* po/sv.po:
	* po/uk.po:
          updated translations

2004-05-03  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstbin.c: (gst_bin_dispose):
	  better debugging

2004-05-03  Johan Dahlin  <johan@gnome.org>

	* gst/schedulers/gstoptimalscheduler.c
	(gst_opt_scheduler_pad_unlink): Check if element is non-NULL and
	really is a GstElement. Avoids critical when running gst-launch -v
	and a oggdemux/decoding pipeline.

2004-05-02  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>

	* docs/gst/tmpl/gstpipeline.sgml :
	* docs/manual/elements-api.xml :
		doc fix by Patrick Guimond (Protector) from devel ML
		reviewed by ronald

2004-05-02  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>

	* docs/gst/Makefile.am :
	* docs/libs/Makefile.am :
		apply a patch from Arwed v. Merkatz so that gtk-doc
		generated docs install (same for .devhelp file)
		(fixes part 1 of #138836)

2004-04-30  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>

	* docs/faq/dependencies.xml: typo
	* docs/faq/getting.xml :
	    - fix download URL for new gstreamer site
	    - hide sf.net download page as latest version aren't there
	    - fix apt URLs
	    - fill "get via CVS" paragraph (link to dev page on the site)
	* docs/faq/general.xml:
	    hide status tables as they no more exists
	    change case on plugins license file to reflect reality
	* docs/faq/troubleshooting.xml:
	    remove the wiki question/answer as there is no more wiki

2004-04-30  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsterror.h:
          include the headers needed for declarations used in this header

2004-04-30  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>

	* docs/random/uraeus/gstreamer_and_midi.txt :
	  add .kar (midi + karaoke/lyrics 'track') doc to midi doc.
	  (fixes #132288)

2004-04-30  Sebastien Cote  <sc5@hermes.usherb.ca>

	reviewed by Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/gthread-cothreads.h:
	  free allocated data for main cothread, too when destroying context
	  (fixes #141417)

2004-04-29  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>

	* docs/manual/goals.xml : remove duplicated paragraph at end 
	of doc page (fixes #141448)

2004-04-29  David Schleef  <ds@schleef.org>

	* gst/elements/gstfilesink.c: (gst_filesink_handle_event):
	Patch from Sebastien Cote to fix leakage of events. (bug #141414)

2004-04-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstfakesrc.c: (gst_fakesrc_class_init):
          fix property
	* gst/gstcaps.c:
          fix doc string
	* po/POTFILES.in:
          rename typefind source file

2004-04-28  David Schleef  <ds@schleef.org>

	Several new files from Steve Lhomme's MSVC patch (bug #141317):
	* win32/GStreamer.vcproj:
	* win32/Makefile:
	* win32/config.h:
	* win32/dirent.c: (_topendir), (_treaddir), (_tclosedir),
	(_trewinddir), (_ttelldir), (_tseekdir):
	* win32/dirent.h:
	* win32/gst-inspect.vcproj:
	* win32/gst-launch.vcproj:
	* win32/gst-register.vcproj:
	* win32/gstbytestream.vcproj:
	* win32/gstelements.vcproj:
	* win32/gstoptimalscheduler.vcproj:
	* win32/gstspider.vcproj:
	* win32/gtchar.h:
	* win32/mman.c: (mmap), (mprotect), (msync), (munmap):
	* win32/mman.h:
	* win32/mman.inl:
	* win32/msvc71.sln:

2004-04-29  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gst.c: (init_post):
	* gst/gstinfo.c:
	  remove useless _gst_progname stuff
	* tools/gst-inspect.c: (print_field), (print_caps):
	  improve caps output

2004-04-28  David Schleef  <ds@schleef.org>

	Disable parsing of a lot of files that aren't part of the
	exported API.  Move corresponding template files to old/,
	waiting for removal when they don't contain anything
	interesting.
	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/cothreads.sgml:
	* docs/gst/tmpl/cothreads_compat.sgml:
	* docs/gst/tmpl/gettext.sgml:
	* docs/gst/tmpl/gobject2gtk.sgml:
	* docs/gst/tmpl/grammar.tab.sgml:
	* docs/gst/tmpl/gst-i18n-app.sgml:
	* docs/gst/tmpl/gst-i18n-lib.sgml:
	* docs/gst/tmpl/gst_private.sgml:
	* docs/gst/tmpl/gstaggregator.sgml:
	* docs/gst/tmpl/gstarch.sgml:
	* docs/gst/tmpl/gstatomic_impl.sgml:
	* docs/gst/tmpl/gstbufferstore.sgml:
	* docs/gst/tmpl/gstdata_private.sgml:
	* docs/gst/tmpl/gstdisksink.sgml:
	* docs/gst/tmpl/gstdisksrc.sgml:
	* docs/gst/tmpl/gstelementfactory.sgml:
	* docs/gst/tmpl/gstextratypes.sgml:
	* docs/gst/tmpl/gstfakesink.sgml:
	* docs/gst/tmpl/gstfakesrc.sgml:
	* docs/gst/tmpl/gstfdsink.sgml:
	* docs/gst/tmpl/gstfdsrc.sgml:
	* docs/gst/tmpl/gstfilesink.sgml:
	* docs/gst/tmpl/gstfilesrc.sgml:
	* docs/gst/tmpl/gsthttpsrc.sgml:
	* docs/gst/tmpl/gstidentity.sgml:
	* docs/gst/tmpl/gstindexfactory.sgml:
	* docs/gst/tmpl/gstmarshal.sgml:
	* docs/gst/tmpl/gstmd5sink.sgml:
	* docs/gst/tmpl/gstmultidisksrc.sgml:
	* docs/gst/tmpl/gstmultifilesrc.sgml:
	* docs/gst/tmpl/gstpadtemplate.sgml:
	* docs/gst/tmpl/gstpipefilter.sgml:
	* docs/gst/tmpl/gstschedulerfactory.sgml:
	* docs/gst/tmpl/gstsearchfuncs.sgml:
	* docs/gst/tmpl/gstshaper.sgml:
	* docs/gst/tmpl/gstspider.sgml:
	* docs/gst/tmpl/gstspideridentity.sgml:
	* docs/gst/tmpl/gststatistics.sgml:
	* docs/gst/tmpl/gsttee.sgml:
	* docs/gst/tmpl/gsttimecache.sgml:
	* docs/gst/tmpl/gsttypefind.sgml:
	* docs/gst/tmpl/gsttypefindfactory.sgml:
	* docs/gst/tmpl/gstxmlregistry.sgml:
	* docs/gst/tmpl/gthread-cothreads.sgml:
	* docs/gst/tmpl/old/cothreads.sgml:
	* docs/gst/tmpl/old/cothreads_compat.sgml:
	* docs/gst/tmpl/old/gettext.sgml:
	* docs/gst/tmpl/old/gobject2gtk.sgml:
	* docs/gst/tmpl/old/grammar.tab.sgml:
	* docs/gst/tmpl/old/gst-i18n-app.sgml:
	* docs/gst/tmpl/old/gst-i18n-lib.sgml:
	* docs/gst/tmpl/old/gst_private.sgml:
	* docs/gst/tmpl/old/gstaggregator.sgml:
	* docs/gst/tmpl/old/gstarch.sgml:
	* docs/gst/tmpl/old/gstatomic_impl.sgml:
	* docs/gst/tmpl/old/gstbufferstore.sgml:
	* docs/gst/tmpl/old/gstdata_private.sgml:
	* docs/gst/tmpl/old/gstdisksink.sgml:
	* docs/gst/tmpl/old/gstdisksrc.sgml:
	* docs/gst/tmpl/old/gstelementfactory.sgml:
	* docs/gst/tmpl/old/gstextratypes.sgml:
	* docs/gst/tmpl/old/gstfakesink.sgml:
	* docs/gst/tmpl/old/gstfakesrc.sgml:
	* docs/gst/tmpl/old/gstfdsink.sgml:
	* docs/gst/tmpl/old/gstfdsrc.sgml:
	* docs/gst/tmpl/old/gstfilesink.sgml:
	* docs/gst/tmpl/old/gstfilesrc.sgml:
	* docs/gst/tmpl/old/gsthttpsrc.sgml:
	* docs/gst/tmpl/old/gstidentity.sgml:
	* docs/gst/tmpl/old/gstindexfactory.sgml:
	* docs/gst/tmpl/old/gstmarshal.sgml:
	* docs/gst/tmpl/old/gstmd5sink.sgml:
	* docs/gst/tmpl/old/gstmultidisksrc.sgml:
	* docs/gst/tmpl/old/gstmultifilesrc.sgml:
	* docs/gst/tmpl/old/gstpadtemplate.sgml:
	* docs/gst/tmpl/old/gstpipefilter.sgml:
	* docs/gst/tmpl/old/gstschedulerfactory.sgml:
	* docs/gst/tmpl/old/gstsearchfuncs.sgml:
	* docs/gst/tmpl/old/gstshaper.sgml:
	* docs/gst/tmpl/old/gstspider.sgml:
	* docs/gst/tmpl/old/gstspideridentity.sgml:
	* docs/gst/tmpl/old/gststatistics.sgml:
	* docs/gst/tmpl/old/gsttee.sgml:
	* docs/gst/tmpl/old/gsttimecache.sgml:
	* docs/gst/tmpl/old/gsttypefindfactory.sgml:
	* docs/gst/tmpl/old/gstxmlregistry.sgml:
	* docs/gst/tmpl/old/gthread-cothreads.sgml:
	* docs/gst/tmpl/old/types.sgml:
	* docs/gst/tmpl/types.sgml:

	Rename gsttypefind.[ch] back to gsttypefindelement.[ch], since
	gtkdoc-scan doesn't like files with the same name in different
	directories.
	* gst/elements/Makefile.am:
	* gst/elements/gstelements.c:
	* gst/elements/gsttypefind.c: 
	* gst/elements/gsttypefind.h:
	* gst/elements/gsttypefindelement.c:
	* gst/elements/gsttypefindelement.h:

2004-04-28  David Schleef  <ds@schleef.org>

	A bunch of portability fixes, derived from Steve Lhomme's MSVC
	patch (bug #141317):
	* gst/gst-i18n-lib.h: Allow disabling gettext.
	* gst/gstatomic_impl.h: disable warning when it's dumb.
	* gst/gstclock.c: fix include
	* gst/gstcompat.h: fix variadic macro
	* gst/gstinfo.c: fix include
	* gst/gstmacros.h: add defines for inlines on MSVC
	* gst/gstplugin.c: fix includes
	* gst/gstregistry.c: fix includes
	* gst/gstregistry.h: use S_IREAD, etc., if S_IRUSR isn't defined
	* gst/gstsystemclock.c: fix include
	* gst/gsttrace.c: (gst_trace_new), (gst_trace_text_flush): use
	S_IREAD if S_IRUSR isn't defined.  fix use of non-portable functions
	* gst/registries/gstxmlregistry.c:
	(gst_xml_registry_parse_element_factory): fix use of non-portable
	functions
	* libs/gst/control/dparam.h: Remove trailing comma in enum definition
	* libs/gst/control/dparammanager.h: same

2004-04-28  David Schleef  <ds@schleef.org>

	Move a bunch of unused files to old/ with names that are
	not case-insensitive-unique.  These files still contain some
	useful information that needs to be merged into gstbin.sgml,
	etc., so they shouldn't be deleted yet.
	* docs/gst/tmpl/GstBin.sgml:
	* docs/gst/tmpl/GstBuffer.sgml:
	* docs/gst/tmpl/GstCaps.sgml:
	* docs/gst/tmpl/GstClock.sgml:
	* docs/gst/tmpl/GstCompat.sgml:
	* docs/gst/tmpl/GstData.sgml:
	* docs/gst/tmpl/GstElement.sgml:
	* docs/gst/tmpl/GstEvent.sgml:
	* docs/gst/tmpl/GstIndex.sgml:
	* docs/gst/tmpl/GstStructure.sgml:
	* docs/gst/tmpl/GstTag.sgml:
	* docs/gst/tmpl/old/GstBin.sgml:
	* docs/gst/tmpl/old/GstBuffer.sgml:
	* docs/gst/tmpl/old/GstCaps.sgml:
	* docs/gst/tmpl/old/GstClock.sgml:
	* docs/gst/tmpl/old/GstCompat.sgml:
	* docs/gst/tmpl/old/GstData.sgml:
	* docs/gst/tmpl/old/GstElement.sgml:
	* docs/gst/tmpl/old/GstEvent.sgml:
	* docs/gst/tmpl/old/GstIndex.sgml:
	* docs/gst/tmpl/old/GstStructure.sgml:
	* docs/gst/tmpl/old/GstTag.sgml:

2004-04-28  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c: (gst_caps_copy), (gst_caps_free),
	(gst_caps_append), (gst_caps_append_structure),
	(gst_caps_get_size), (gst_caps_get_structure), (gst_caps_copy_1),
	(gst_caps_set_simple), (gst_caps_set_simple_valist),
	(gst_caps_is_any), (gst_caps_is_empty), (gst_caps_is_chained),
	(gst_caps_is_fixed), (gst_caps_is_always_compatible),
	(gst_caps_intersect), (gst_caps_normalize),
	(gst_caps_transform_to_string):  Patch from Tim-Philipp Müller
	to fix GST_CAPS() and GST_IS_CAPS(). (bug #141304)
	* gst/gstcaps.h: use GST_IS_CAPS().

2004-04-26  David Schleef  <ds@schleef.org>

	* gst/gstcpu.c: (gst_cpuid_i386): Don't clobber ebx in inline
	assembly.  gcc doesn't handle it correctly. (bug #141083)
	* gst/gsttrashstack.h: same

2004-04-25  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c: (gst_element_change_state):
	  fix assertion to do an int comparison

2004-04-25  Benjamin Otte  <otte@gnome.org>

	* gst/elements/gstfilesrc.c: (gst_filesrc_open_file):
	  better debugging output on error

2004-04-25  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_subtract):
	  fix memleak

2004-04-23  Benjamin Otte  <otte@gnome.org>

	* gst/gstvalue.c: (gst_value_compare_buffer),
	(_gst_value_initialize):
	  add comparison function for buffers

2004-04-22  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/pwg.xml:
	  Just found out that this so-called "ima-wav" format is really
	  just "dvi adpcm" (according to the MS WAV documentation). So
	  renaming it. We didn't use it yet anyway.

2004-04-23  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_is_always_compatible):
	  call gst_caps_is_subset

2004-04-23  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_subtract), (gst_caps_is_equal), 
	(gst_caps_is_subset):
	  add documentation

2004-04-23  Benjamin Otte  <otte@gnome.org>
	  
	* gst/gstcaps.c: (gst_caps_structure_subtract_field),
	(gst_caps_structure_subtract), (gst_caps_subtract),
	(gst_caps_structure_figure_out_union),
	(gst_caps_structure_simplify), (gst_caps_do_simplify):
	  fix simplifying and subtracting not working correctly with optional
	  properties
	  solve assorted problems that make it now simplify ebven more
	* docs/gst/tmpl/gstcaps.sgml:
	* gst/gstcaps.h:
	  make gst_caps_do_simplify return a bool to indicate if it simplified
	* testsuite/caps/simplify.c: (main):
	  add more checks. The tests is quite a bit useless right now because
	  the core is heavily simplifying itself.
	* testsuite/caps/caps.h:
	  fix caps to contain all optional properties

2004-04-22  Benjamin Otte  <otte@gnome.org>

	* docs/gst/tmpl/gstcaps.sgml:
	* docs/gst/tmpl/gstfilesrc.sgml:
	* docs/gst/tmpl/gststructure.sgml:
	* docs/gst/tmpl/gstvalue.sgml:
	  update for recent API changes
	* gst/gstcaps.c: (gst_caps_do_simplify):
	  fix to stop trying with a freed structure
	* gst/gstpad.c: (gst_pad_link_fixate):
	  simplify caps
	* gst/gstpad.c: (gst_pad_template_get_caps_by_name):
	  remove C++ comment
	* gst/gstpad.h:
	  deprecate gst_pad_template_get_caps_by_name, it doesn't work anyway
	* gst/gststructure.c: (gst_structure_value_get_generic_type),
	(gst_structure_to_string):
	  keep the correct type when using lists of ranges
	* gst/gstvalue.c: (gst_value_list_prepend_value),
	(gst_value_list_append_value):
	  copy the value before adding to the list (d'oh)
	* gst/gstvalue.c: (gst_value_subtract_int_range_int),
	(gst_value_subtract_int_range_int_range):
	  handle overflows correctly
	* gst/gstvalue.c: (gst_value_subtract_from_list):
	  fix memleak
	* testsuite/caps/caps.h:
	  add a caps that caused segfaults

2004-04-22  Benjamin Otte  <otte@gnome.org>

	* testsuite/refcounting/pad.c: (main):
	  fix test

2004-04-22  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_subtract):
	  allow subtracting ANY and EMPTY from ANY caps

2004-04-22  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_append), (gst_caps_intersect),
	(gst_caps_union):
	  only simplify in functions that create new caps. Simplifying in
	  gst_caps_append breaks tests.

2004-04-22  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_structure_simplify):
	  unset GValue after use
	* gst/gstcaps.c: (gst_caps_append), 
	* gst/gstpad.c: (gst_pad_link_fixate), (gst_pad_template_new):
	  use gst_caps_simplify (reduces registry size by 30%)
	* gst/gstpad.c: (gst_pad_template_new):
	  don't allow NULL caps

2004-04-22  Benjamin Otte  <otte@gnome.org>

	* docs/gst/gstreamer-sections.txt:
	  add gst_caps_do_simplify
	* gst/gstcaps.c:
	  add documentation for gst_caps_do_simplify
	* gst/gstvalue.h:
	  fix typo in gst_value_register_subtract_func declaration for gst-doc

2004-04-22  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_from_string_inplace):
	  fix bug when converting from empty string.
	* gst/gstcaps.c: (gst_caps_new_any), (gst_caps_new_simple),
	(gst_caps_new_full_valist), (gst_caps_copy), (gst_caps_copy_1):
	  use gst_caps_new_empty to allocate a new caps. Only that function
	  allocates memory for caps now.
	* gst/gstcaps.c: (gst_caps_remove_and_get_structure),
	(gst_caps_remove_structure):
	  add ability to remove one structure (but not to header yet)
	* gst/gstcaps.c: (gst_caps_compare_structures),
	(gst_caps_simplify), (gst_caps_structure_figure_out_union),
	(gst_caps_structure_simplify), (gst_caps_do_simplify),
	* gst/gstcaps.h:
	  add gst_caps_do_simplify that tries to simplify a caps in place.
	  Deprecate old gst_caps_simplify function.
	* testsuite/caps/caps.h:
	  add caps.h containing a common set of caps to test against.
	* testsuite/caps/sets.c: (check_caps), (main):
	  use it.
	* testsuite/caps/.cvsignore:
	* testsuite/caps/Makefile.am:
	* testsuite/caps/simplify.c: (check_caps), (main):
	  add test to check correctness and efficency of caps simplification.

2004-04-22  Sebastien Cote <sc5@hermes.usherb.ca>

	reviewed by Benjamin Otte  <otte@gnome.org>

	* gst/gstparse.c: (_gst_parse_escape):
	  Free the GString used in _gst_parse_escape()

2004-04-21  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstpad.c: (gst_pad_link_negotiate):
	  refuse to link if the link is not possible
	* configure.ac:
	* testsuite/Makefile.am:
	* testsuite/negotiation/.cvsignore:
	* testsuite/negotiation/Makefile.am:
	* testsuite/negotiation/pad_link.c: (main):
	  add test that checks the above behaviour

2004-04-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
          add newly added API

2004-04-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstfilesrc.c: (gst_filesrc_init),
	(gst_filesrc_get_mmap), (gst_filesrc_get_read), (gst_filesrc_get),
	(gst_filesrc_open_file), (gst_filesrc_close_file),
	(gst_filesrc_srcpad_query), (gst_filesrc_srcpad_event):
	* gst/elements/gstfilesrc.h:
          add support for non-regular files (#140734)

2004-04-21  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_link_fixate):
	  add sophisticated error checking code to see if fixation functions
	  did their fixation right

2004-04-21  Benjamin Otte  <otte@gnome.org>

	* gst/gstcaps.c: (gst_caps_append), (gst_caps_union):
	  check for ANY caps before appending/unioning
	* gst/gstcaps.c: (gst_caps_is_subset),
	(gst_caps_is_equal), (gst_caps_structure_subtract_field),
	(gst_caps_structure_subtract), (gst_caps_subtract):
	* gst/gstcaps.h:
	  add gst_caps_is_equal, gst_caps_is_subset and gst_caps_subtract to
	  the API. deprecate gst_caps_is_equal_fixed
	* gst/gstpad.c: (gst_pad_try_set_caps):
	* gst/gstqueue.c: (gst_queue_link):
	  s/gst_caps_is_equal_fixed/gst_caps_is_equal/
	* gst/gststructure.c: (gst_structure_get_name_id):
	* gst/gststructure.h:
	  add function gst_structure_get_name_id
	* gst/gstvalue.c: (gst_value_subtract_int_int_range),
	(gst_value_create_new_range), (gst_value_subtract_int_range_int),
	(gst_value_subtract_int_range_int_range),
	(gst_value_subtract_double_double_range),
	(gst_value_subtract_double_range_double),
	(gst_value_subtract_double_range_double_range),
	(gst_value_subtract_from_list), (gst_value_subtract_list),
	(gst_value_can_intersect), (gst_value_subtract),
	(gst_value_can_subtract), (gst_value_register_subtract_func),
	(_gst_value_initialize):
	* gst/gstvalue.h:
	  add support for subtracting values from each other. Note that
	  subtracting means subtracting as in set theory. Required for caps
	  stuff above.
	* testsuite/caps/.cvsignore:
	* testsuite/caps/Makefile.am:
	* testsuite/caps/erathostenes.c: (erathostenes), (main):
	* testsuite/caps/sets.c: (check_caps), (main):
	* testsuite/caps/subtract.c: (check_caps), (main):
	  add tests for subtraction and equality code.

2004-04-20  David Schleef  <ds@schleef.org>

	* gst/autoplug/Makefile.am:  Fix some little buglets in last checkin.
	* gst/indexers/Makefile.am:
	* gst/schedulers/Makefile.am:
	* libs/gst/bytestream/Makefile.am:
	* libs/gst/control/Makefile.am:
	* libs/gst/getbits/Makefile.am:

2004-04-20  David Schleef  <ds@schleef.org>

	* common/as-libtool.mak: Fine-tune DLL building.
	* configure.ac: Link plugins against libgstreamer.  Define plugindir
	(like gst-plugins)
	* examples/plugins/Makefile.am: remove plugindir
	* gst/autoplug/Makefile.am: DLL building fixes
	* gst/elements/Makefile.am: DLL building fixes.  Disable pipefilter on
	Windows.
	* gst/elements/gstelements.c: Conditionally disable pipefilter.
	* gst/indexers/Makefile.am: DLL building fixes
	* gst/schedulers/Makefile.am: DLL building fixes.
	* libs/gst/bytestream/Makefile.am: DLL building fixes.
	* libs/gst/control/Makefile.am: same
	* libs/gst/getbits/Makefile.am: same
	* testsuite/Makefile.am: New dlopen directory
	* testsuite/dlopen/Makefile.am: Tests to check if libgstreamer works
	when dlopened.
	* testsuite/dlopen/dlopen_gst.c: (main): same
	* testsuite/dlopen/loadgst.c: (do_test): same

2004-04-20  David Schleef  <ds@schleef.org>

	* gst/parse/grammar.y:  Apply patch from Sebastien Cote
	<sc5@hermes.usherb.ca> to fix a memleak. (bug #140594)

2004-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_wait),
	(gst_element_set_time_delay), (gst_element_change_state):
          Use GST_TIME_*

2004-04-20  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/autoplug/gstspider.c: (gst_spider_link_sometimes),
	(gst_spider_identity_plug):
	  improve debugging messages
	* gst/gstbin.c: (gst_bin_remove_func):
	  make sure the state_change function is only called with simple state
	  transitions

2004-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstfakesink.c: (gst_fakesink_state_error_get_type),
	(gst_fakesink_set_property), (gst_fakesink_chain):
	* gst/elements/gstfakesrc.c: (gst_fakesrc_set_property):
	* gst/elements/gstfdsrc.c: (gst_fdsrc_set_property):
	* gst/elements/gstfilesrc.c: (gst_filesrc_set_property):
	* gst/elements/gstidentity.c: (gst_identity_chain),
	(gst_identity_set_property):
	* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_set_property):
	* gst/elements/gstpipefilter.c: (gst_pipefilter_set_property):
          add warnings to _set_property for unknown arguments
          use GST_TIME_FORMAT/GST_TIME_ARGS for timestamp printing

2004-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am:
	* docs/manuals.mak:
          add .po file download snippet
          fix a bug in the doc makefile

2004-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am:
	* po/LINGUAS:
	* po/en_GB.po:
          Added en_GB translation (Gareth Owen)

2004-04-20  Johan Dahlin  <johan@gnome.org>

	* gst/gstpad.c (_invent_event): Clean up

2004-04-20  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* testsuite/caps/filtercaps.c: (main):
	  fix test to test things correctly (caps are complicated)

2004-04-20  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* testsuite/caps/Makefile.am:
	* testsuite/caps/filtercaps.c: (main):
	  add test (that doesn't work right now, but should)

2004-04-19  David Schleef  <ds@schleef.org>

	* configure.ac: Add test for allowing unaligned access.  Add define
	to put in gstconfig.h.
	* docs/gst/gstreamer-sections.txt: New symbols
	* docs/gst/tmpl/gstcompat.sgml: Check in changes made by gtkdoc
	* docs/gst/tmpl/gstfilesrc.sgml:
	* docs/gst/tmpl/gstparse.sgml:
	* docs/gst/tmpl/gsttypes.sgml:
	* docs/gst/tmpl/gstutils.sgml:
	* docs/gst/tmpl/gstvalue.sgml:
	* gst/gstconfig.h.in: Add GST_HAVE_UNALIGNED_ACCESS
	* gst/gstutils.h: Add macros for unaligned memory access.  Useful
	on most !i386/!powerpc architectures.  From Daniel Gazard
	<daniel.gazard@free.fr>.  (bug #140156)
	* po/af.po: Check in changes made by gettext.
	* po/az.po:
	* po/fr.po:
	* po/nl.po:
	* po/sr.po:
	* po/sv.po:

2004-04-20  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/entryscheduler.c: 
	(gst_entry_scheduler_yield):
	  refuse to yield when decoupled elements insist on doing that.
	  At least it's better than crashing

2004-04-19  David Schleef  <ds@schleef.org>

	* docs/libs/Makefile.am: Change sinclude to include
	* docs/gst/Makefile.am: same
	* pkgconfig/Makefile.am:  Remove GNU-ism from makefile target

2004-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/LINGUAS:
	* po/uk.po:
          Added Ukrainian translation (Maxim V. Dziumanenko)

2004-04-19  Johan Dahlin  <johan@gnome.org>

	* gst/parse/grammar.y (__gst_parse_chain_free): Don't do null
	checking here, do it before calling the function.
	Clean up, use for loops instead of while loops while iterating
	over lists.

	* gst/autoplug/gstspider.c (gst_spider_request_new_pad): Fix typo
	in debug message.
	(gst_spider_create_and_plug): Improve debug message.
	General: Replace while loops which iterates over GLists with for
	loops. Which are much cleaner, improves readability, especially
	for gst_spider_identity_plug

	* gst/gstpad.c (_invent_event): Fix parameters to warning macros,
	fixes bug 140477

2004-04-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/LINGUAS:
	* po/tr.po:
          Added Turkish translation (Baris Cicek)

2004-04-18  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/faq/troubleshooting.xml:
	  Mention gst-register in the FAQ (fixes 139045).

2004-04-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:

2004-04-17  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c: (gst_element_dispose):
	  simplify
	* gst/gstpad.c: (gst_pad_call_chain_function):
	  don't create loads of events due to bad macro usage

2004-04-16  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c: (gst_caps_is_fixed_foreach):
	* gst/gstpad.c: (_gst_pad_default_fixate_foreach):
	* gst/gstvalue.c: (gst_value_serialize_buffer),
	(gst_value_deserialize_buffer), (gst_type_is_fixed),
	(_gst_value_initialize): Create a new function gst_type_is_fixed()
	to indicate types that are fixed wrt caps or not.  Switching to
	this function fixes (bug #140298).
	* gst/gstvalue.h:

2004-04-16  David Schleef  <ds@schleef.org>

	* common/m4/gst-arch.m4:  Implmenent a whitelist and blacklist
	for GST_UNALIGNED_ACESS, since we essentially know which archs
	are ok.

2004-04-17  Benjamin Otte  <otte@gnome.org>

	* docs/gst/Makefile.am:
	  ignore gst/parse directory when building docs (fixes #140205)

2004-04-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* testsuite/refcounting/mem.c: (vmsize):
          do error checking

2004-04-16  Johan Dahlin  <johan@gnome.org>

	* docs/gst/gstreamer-sections.txt: Add gst_pad_call_chain_function
	and gst_pad_call_get_function.

2004-04-15  David Schleef  <ds@schleef.org>

	* common/m4/gst-arch.m4: Add GST_UNALIGNED_ACCESS() macro that
	checks if we can access unaligned memory.
	* configure.ac: Use it.

2004-04-16  Benjamin Otte  <otte@gnome.org>

	* gst/elements/gstfilesrc.c: (gst_filesrc_init), (gst_filesrc_get),
	(gst_filesrc_change_state), (gst_filesrc_srcpad_event):
	* gst/elements/gstfilesrc.h:
	  s/seek_happened/need_discont/ and require discont before sending any
	  data

2004-04-15  David Schleef  <ds@schleef.org>

	* gst/gstvalue.c: (gst_value_serialize_buffer),
	(gst_value_deserialize_buffer), (_gst_value_initialize):
	Register these types as fundamental types. (bug #140015)

2004-04-16  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_set_active), (gst_pad_link_new),
	(gst_pad_link_free), (gst_pad_link_try), (_invent_event),
	(gst_pad_pull):
	  implement enforcing discont events before buffers are passed. This
	  allows state changes of only some elements and later correctly going
	  on where they left off (or in short: you can now set audio sinks to
	  NULL to release the device when the pipeline is paused)
	* gst/gstpad.c: (gst_pad_call_chain_function),
	(gst_pad_call_get_function):
	* gst/gstpad.h:
	  add gst_pad_call_chain_function and gst_pad_call_get_function for
	  scheduler interaction. They are required because of the changes
	  above.
	* gst/schedulers/entryscheduler.c: (get_buffer),
	(gst_entry_scheduler_chain_wrapper),
	(gst_entry_scheduler_get_wrapper),
	(gst_entry_scheduler_state_transition),
	(gst_entry_scheduler_pad_link):
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_chain_wrapper),
	(gst_basic_scheduler_src_wrapper),
	(gst_basic_scheduler_chainhandler_proxy),
	(gst_basic_scheduler_gethandler_proxy),
	(gst_basic_scheduler_cothreaded_chain),
	(gst_basic_scheduler_chain_elements):
	* gst/schedulers/gstoptimalscheduler.c:
	(get_group_schedule_function), (pad_clear_queued),
	(gst_opt_scheduler_pad_link):
	  use the new functions instead of calling get/chain-functions
	  directly.

2004-04-15  David Schleef  <ds@schleef.org>

	* docs/gst/gstreamer-sections.txt: Remove deprecated symbols.
	* docs/gst/tmpl/gstinfo.sgml: same
	* docs/gst/tmpl/gstutils.sgml: Remove a bunch of bogus crap that
	gtk-doc put here.
	* gst/gstutils.h: Remove the \ that was confusing gtk-doc.
	* examples/queue/queue.c: (main):  We iterate pipelines, not
	bins.  (bug #139996)

2004-04-15  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-types.xml:
	  Add MS RLE support. Also document Qt RLE although I have no sample
	  files for that yet. And document an extra property for ADPCM.

2004-04-15  David Schleef  <ds@schleef.org>

	* gst/gstplugin.c: (_gst_plugin_fault_handler_restore),
	(_gst_plugin_fault_handler_setup):  Disable more stuff on
	Windows.

2004-04-15  David Schleef  <ds@schleef.org>

	* gst/gstinfo.c: (_gst_debug_init): Change some internal
	symbol names to not conflict with new gstinfo.h symbols.
	* gst/gstinfo.h: Add inline functions for all those crazy
	compilers that don't know how to handle variadic macros (MSVC).

2004-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: bump nano to 1

=== release 0.8.1 ===

2004-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* NEWS:
	* RELEASE:
	* configure.ac:
          releasing 0.8.1, "Snow Brigade"

2004-04-14  David Schleef  <ds@schleef.org>

	* testsuite/Makefile.am: define tests_ignore
	* testsuite/Rules: Added new tests_ignore, which get compiled,
	but not run (generally because they're inconsistent or have
	heisenbugs).  Now we can ensure all the .c files compile in
	testsuite/.
	* testsuite/bins/Makefile.am: define tests_ignore
	* testsuite/bytestream/Makefile.am:
	* testsuite/caps/Makefile.am:
	* testsuite/clock/Makefile.am:
	* testsuite/debug/Makefile.am:
	* testsuite/debug/global.c: (gst_debug_log_one),
	(gst_debug_log_two): Fix compilation problem.
	* testsuite/dynparams/Makefile.am:
	* testsuite/elements/Makefile.am:
	* testsuite/ghostpads/Makefile.am:
	* testsuite/indexers/Makefile.am:
	* testsuite/parse/Makefile.am:
	* testsuite/plugin/Makefile.am:
	* testsuite/refcounting/Makefile.am:
	* testsuite/refcounting/element_pad.c: (main): Don't return leak
	results, because it's not calculated correctly.
	* testsuite/refcounting/pad.c: (main): same
	* testsuite/states/Makefile.am:
	* testsuite/tags/Makefile.am:
	* testsuite/threads/Makefile.am:

2004-04-14  David Schleef  <ds@schleef.org>

	* gst/gstcpu.c: (gst_cpuid_i386): Add workaround for gcc-3.2
	generating bad code around the cpu detection asm code.

2004-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/gst-inspect.c: (print_element_info):
          print numeric version of rank as well, since we added some - 1
          rank values to elements

2004-04-13  David Schleef  <ds@schleef.org>

	* configure.ac:  Disable various code when compiling for MinGW.
	* gst/elements/Makefile.am:
	* gst/elements/gstelements.c:
	* gst/elements/gstfdsrc.c: (gst_fdsrc_get):
	* gst/elements/gstfilesrc.c: (gst_filesrc_init), (gst_filesrc_get):
	* gst/registries/gstxmlregistry.c: (make_dir):

2004-04-13  David Schleef  <ds@schleef.org>

	* gst/Makefile.am:
	* gst/gstcpu.c: (gst_cpuid_i386): Convert asm source into inline
	assembly.
	* gst/gstcpuid_i386.s: remove

2004-04-13  David Schleef  <ds@schleef.org>

	* docs/gst/tmpl/gstaggregator.sgml: Random checkin because gtk-doc
	seems to think it needs to be done.
	* docs/gst/tmpl/gstfakesink.sgml:
	* docs/gst/tmpl/gstfakesrc.sgml:
	* docs/gst/tmpl/gstfdsink.sgml:
	* docs/gst/tmpl/gstfdsrc.sgml:
	* docs/gst/tmpl/gstfilesink.sgml:
	* docs/gst/tmpl/gstfilesrc.sgml:
	* docs/gst/tmpl/gstidentity.sgml:
	* docs/gst/tmpl/gstmd5sink.sgml:
	* docs/gst/tmpl/gstmultifilesrc.sgml:
	* docs/gst/tmpl/gstpipefilter.sgml:
	* docs/gst/tmpl/gstshaper.sgml:
	* docs/gst/tmpl/gstspider.sgml:
	* docs/gst/tmpl/gstspideridentity.sgml:
	* docs/gst/tmpl/gststatistics.sgml:
	* docs/gst/tmpl/gsttee.sgml:
	* docs/gst/tmpl/gsttypefind.sgml:
	* docs/gst/tmpl/gstutils.sgml:

2004-04-13  David Schleef  <ds@schleef.org>

	* configure.ac: Changes to remove POSIXisms (mmap in this case)
	and to build DLLs on Windows.
	* gst/Makefile.am:
	* gst/elements/gstfilesrc.c: (gst_filesrc_get),
	(gst_filesrc_open_file):
	* gst/schedulers/Makefile.am:

2004-04-13  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c: (gst_caps_structure_fixate_field_nearest_int),
	(gst_caps_structure_fixate_field_nearest_double):  Fix bug in
	fixating lists.

2004-04-12  David Schleef  <ds@schleef.org>

	* gst/gstbuffer.c: (_gst_buffer_initialize), (gst_buffer_get_type),
	(gst_buffer_free_chunk): Added gst_buffer_get_type() and changed
	to using it.
	* gst/gstbuffer.h: Changed GST_BUFFER_TYPE to gst_buffer_get_type()
	* gst/gstcaps.c: (gst_caps_is_fixed_foreach): Buffer is a fixed type
	* gst/gstpad.c: (_gst_pad_default_fixate_foreach): same
	* gst/gststructure.c: (gst_structure_set_valist),
	(gst_structure_from_abbr), (gst_structure_to_abbr): Add vararg
	support for buffers.
	* gst/gsttag.c: (gst_tag_register): Constify a prototype that was
	intended to be const.
	* gst/gsttag.h: same
	* gst/gstvalue.c: (gst_value_serialize_buffer),
	(gst_value_deserialize_buffer), (_gst_value_initialize):  Add code
	to (de)serialize buffers.
	* testsuite/caps/Makefile.am:  Add a bit of buffer testing
	* testsuite/caps/string-conversions.c: (main):
	* testsuite/caps/value_serialize.c: add new test

2004-04-11  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-types.xml:
	  Document MS video 1 (video/x-msvideocodec) mimetype/format.

2004-04-11  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/gstbasicscheduler.c: (plugin_init):
	  rename categories to basic_*
	* gst/schedulers/gstbasicscheduler.c: 
	(gst_basic_scheduler_chain_wrapper),
	(gst_basic_scheduler_chainhandler_proxy),
	(gst_basic_scheduler_gethandler_proxy),
	(gst_basic_scheduler_eventhandler_proxy):
	  debugging category fixes - put common stuff in log category
	* gst/schedulers/gstbasicscheduler.c: 
	(gst_basic_scheduler_chain_elements):
	  dirty fix: call gst_basic_scheduler_cothreaded_chain when already
	  active and linking two active chains

2004-04-10  Benjamin Otte  <otte@gnome.org>

	* docs/pwg/intro-preface.xml:
	  fix dead links and remove reference to Wiki

2004-04-10  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/schedulers/gstbasicscheduler.c:
	  make sure we can switch back to the main function if we're still in
	  the main function (supposed to fix #139617)
	* gst/schedulers/gthread-cothreads.h:
	  don't throw an error when switching to the same cothread

2004-04-09  Benjamin Otte  <otte@gnome.org>

	* gst/gstbin.c: (gst_bin_get_type):
	* gst/gstclock.c: (gst_clock_get_type):
	* gst/gstindex.c: (gst_index_get_type):
	* gst/gstobject.c: (gst_object_get_type),
	(gst_signal_object_get_type):
	* gst/gstpad.c: (gst_pad_get_type), (gst_real_pad_get_type),
	(gst_pad_template_get_type), (gst_ghost_pad_get_type):
	* gst/gstpluginfeature.c: (gst_plugin_feature_get_type):
	* gst/gstqueue.c: (gst_queue_get_type):
	* gst/gstregistry.c: (gst_registry_get_type):
	* gst/gstsystemclock.c: (gst_system_clock_get_type):
	* gst/gstthread.c: (gst_thread_get_type):
	  don't use memchunks for these objects, use malloc instead

2004-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/.cvsignore:
	* docs/gst/Makefile.am:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstaggregator.sgml:
	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstclock.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstfakesink.sgml:
	* docs/gst/tmpl/gstfakesrc.sgml:
	* docs/gst/tmpl/gstfdsink.sgml:
	* docs/gst/tmpl/gstfdsrc.sgml:
	* docs/gst/tmpl/gstfilesink.sgml:
	* docs/gst/tmpl/gstfilesrc.sgml:
	* docs/gst/tmpl/gstidentity.sgml:
	* docs/gst/tmpl/gstindex.sgml:
	* docs/gst/tmpl/gstinfo.sgml:
	* docs/gst/tmpl/gstmd5sink.sgml:
	* docs/gst/tmpl/gstmultifilesrc.sgml:
	* docs/gst/tmpl/gstpad.sgml:
	* docs/gst/tmpl/gstpipefilter.sgml:
	* docs/gst/tmpl/gstpipeline.sgml:
	* docs/gst/tmpl/gstpluginfeature.sgml:
	* docs/gst/tmpl/gstqueue.sgml:
	* docs/gst/tmpl/gstregistry.sgml:
	* docs/gst/tmpl/gstscheduler.sgml:
	* docs/gst/tmpl/gstshaper.sgml:
	* docs/gst/tmpl/gstspider.sgml:
	* docs/gst/tmpl/gstspideridentity.sgml:
	* docs/gst/tmpl/gststatistics.sgml:
	* docs/gst/tmpl/gstsystemclock.sgml:
	* docs/gst/tmpl/gsttee.sgml:
	* docs/gst/tmpl/gstthread.sgml:
	* docs/gst/tmpl/gsttypefind.sgml:
	* docs/gst/tmpl/gstutils.sgml:
          further doc build fixes

2004-04-07  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/Makefile.am:
          make docs exit on scanning problems
          fix nonsrcdir build issues
	* docs/gst/gstreamer-sections.txt:
          adding stuff from -unused
	* gst/gstqueue.h:
          create GstQueueSize
	* gst/schedulers/cothreads_compat.h:
          fix cothread warnings

2004-04-07  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
          remove defines deprecated by Benjamin

2004-04-07  Benjamin Otte  <otte@gnome.org>

	* gst/elements/gstbufferstore.c: (gst_buffer_store_get_buffer):
	  when the buffer is complete, don't check if other buffers are needed
	* gst/elements/gstfilesrc.c: (gst_filesrc_srcpad_event):
	  check that the offset is >0 so we don't try to read before the
	  beginning of the file
	* gst/gstpad.c: (gst_pad_set_pad_template):
	  sink the template, so we don't end up with 130k pad templates

2004-04-06  Benjamin Otte  <otte@gnome.org>

	* gst/autoplug/gstspider.c: (gst_spider_link_add):
	  don't ref the element, adding already reffed it. And we didn't unref
	  it later anyway... (huge memleak when you used many spider elements)
	* gst/gstelement.c: (gst_element_base_class_finalize):
	* gst/gstelementfactory.c: (gst_element_factory_cleanup),
	(gst_element_register):
	* gst/gsturi.c: (gst_element_make_from_uri):
	  use gst_object_(un)ref instead of g_object(un)ref

2004-04-06  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstbuffer.h:
	  remove macro that wouldn't work anymore because struct member has
	  been removed.
	* gst/schedulers/entryscheduler.c: (schedule_forward):
	  fix segfault for unconnected pads
	
2004-04-06  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	reviewed by David Schleef <ds@schleef.org>

	* gst/gstinfo.h:
	  *_FORMAT modifiers should require putting a % in front of them for
	  consistency reasons.

2004-04-05  Colin Walters  <walters@redhat.com>

	* configure.ac (VALGRIND_CFLAGS, VALGRIND_LIBS): Remove spurious
	space.

2004-04-05  Benjamin Otte  <otte@gnome.org>

	* configure.ac:
	* gst/Makefile.am:
	* gst/gst_private.h:
	* gst/gstinfo.c: (__gst_in_valgrind), (_gst_debug_init):
	  add support for detecting if GStreamer runs inside valgrind.
	  requires valgrind (d'oh) and --enable-debug for correct cdetection.
	  print a big message in valgrind that GStreamer has detected it's
	  running inside and might now use different code.
	* gst/gstmemchunk.c: (populate), (free_area),
	(gst_mem_chunk_destroy), (gst_mem_chunk_alloc),
	(gst_mem_chunk_free):
	  flag memchunks for valgrind, so it can detect leaking of chunks.
	  This allows detecting leaks of GstBuffer and GstEvent correctly
	  inside valgrind.

2004-04-05  David Schleef  <ds@schleef.org>

	* gst/gsttrace.h:  Fix #ifdef nesting (bug #139109) Patch from
	  jensgr@gmx.net (Jens Granseuer)

2004-04-05  David Schleef  <ds@schleef.org>

	* gst/gstbuffer.c: (_gst_buffer_sub_free),
	(gst_buffer_default_free), (gst_buffer_default_copy),
	(gst_buffer_alloc_chunk), (gst_buffer_free_chunk),
	(gst_buffer_new), (gst_buffer_create_sub):  Allocate GstBuffer
	structures in one place.

2004-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstinfo.h: adding Ronald's timestamp debugging defines
          (GST_TIME_FORMAT, GST_TIME_ARGS)

2004-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* testsuite/elements/Makefile.am:
          disable test until it stops breaking make distcheck

2004-04-05  Johan Dahlin  <johan@gnome.org>

	* po/sv.po: Updated translation

2004-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstplugin.c: (gst_plugin_load_file):
          fix segfault for when original plugin was loaded statically

2004-04-05  Benjamin Otte  <otte@gnome.org>

	* testsuite/debug/category.c: (main):
	* testsuite/debug/commandline.c: (main):
	* testsuite/debug/output.c: (main):
	  fix tests to work again with debugging enabled

2004-04-05  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_pad_link):
	  fix to work with recent scheduling changes

2004-04-05  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/entryscheduler.c: (some functions, dunno which,
	prepareChangeLog doesn't work when cvs indents):
	  don't throw an error when no element can be scheduled, there's too
	  many weird reasons why it doesn't work. Return STOPPED instead.
	  decoupled elemts' schedulability doesn't depend on bufpens.

2004-04-04  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_pad_select):
	  fix uninitialized variable warnings

2004-04-04  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_collect_valist):
	  fix uninitialized variable warning
	* gst/schedulers/entryscheduler.c: (schedule_forward):
	  fix shadowed variable

2004-04-04  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_collect_array), (gst_pad_collectv),
	(gst_pad_collect), (gst_pad_collect_valist), (gst_pad_selectv),
	(gst_pad_select):
	* gst/gstpad.h:
	* gst/gstscheduler.c: (gst_scheduler_pad_select),
	(gst_scheduler_lock_element), (gst_scheduler_unlock_element):
	* gst/gstscheduler.h:
	  implement gst_pad_collect as replacement for gst_pad_select.
	  deprecate gst_pad_select and gst_scheduler_(un)lock_element
	  add new flag GST_SCHEDULER_FLAG_NEW_API for API that implements the
	  new pad_select, lock and unlock calls.
	* gst/cothreads.c: (cothread_destroy), (cothread_switch):
	* gst/cothreads.h:
	* gst/schedulers/cothreads_compat.h:
	* gst/schedulers/gthread-cothreads.h:
	  remove unused cothread_lock and cothread_unlock calls
	* gst/schedulers/entryscheduler.c:
	(gst_entry_scheduler_class_init), (gst_entry_scheduler_init),
	(_can_schedule_loop), (gst_entry_scheduler_get_handler),
	(gst_entry_scheduler_pad_select):
	  update to new API
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_class_init), (gst_basic_scheduler_init),
	(gst_basic_scheduler_pad_select):
	  remove useless lock and unlock calls, update pad_select to new API
	  (untested)
	* gst/schedulers/gstoptimalscheduler.c:
	(gst_opt_scheduler_class_init):
	  remove useless select, lock and unlock function calls
	* gst/elements/gstaggregator.c: (gst_aggregator_loop):
	  use gst_pad_collect instead of gst_pad_select

2004-04-04  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/entryscheduler.c: (_can_schedule_get),
	(can_schedule_pad), (can_schedule), (schedule), (schedule_forward),
	(schedule_next_element), (print_entry):
	  add can_schedule_pad to handle element states.
	  add schedule_forward to select the correct entry to schedule next

2004-04-03  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/entryscheduler.c: 
	  remove unused variable, fix error inside Rb, fix compile warning in
	  unreachable code

2004-04-03  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/entryscheduler.c:
	  completely revamp the inner workings, so it's a lot easier to
	  understand and extend

2004-04-03  Andy Wingo  <wingo@pobox.com>

	* gst/schedulers/gstoptimalscheduler.c (GstOptSchedulerGroupLink):
	Rename ->group1 and ->group2 to ->src and ->sink, respectively.
	This allows better introspection of pipeline topology.
	(add_to_chain): Don't do trickery to put loop elements first;
	rather, queue a chain sort by marking the chain as dirty.
	(remove_from_chain): Mark the chain dirty.
	(sort_chain): New function. Sorts the group list so that terminal
	sinks are first. This means elements on the sink side will be
	preferentially sscheduled before elements on the src side of the
	pipeline.
	(chain_recursively_migrate_group): Use OTHER_GROUP_LINK.
	(schedule_chain): If the chain is marked DIRTY, call sort_chain.
	(gst_opt_scheduler_pad_link, gst_opt_scheduler_pad_unlink)
	(group_inc_link): Change argument and variable names to match the
	new link structure member names (src and sink).
	(group_dec_link): Add some description

2004-04-03  Benjamin Otte  <otte@gnome.org>

	* gst/autoplug/gstspider.c: (gst_spider_identity_plug):
	* gst/gstinfo.h:
	* testsuite/debug/category.c: (main):
	* testsuite/debug/commandline.c: (main):
	* testsuite/debug/output.c: (main):
	* testsuite/debug/printf_extension.c: (main):
	  fix to successfully build and test with --disable-gst-debug
	  configure switch (fixes #138705)

2004-04-03  Benjamin Otte  <otte@gnome.org>

	* docs/pwg/building-boiler.xml:
	  add cvs login line and s/anonymous/anoncvs/

2004-04-03  Tim-Phillip Müller  <t.i.m@zen.co.uk>

	reviewed by Benjamin Otte  <otte@gnome.org>

	* gst/gststructure.c: (gst_structure_free):
	  memleak fix: free fields array (partial fix for #134839)

2004-04-01  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/random/ds/0.9-suggested-changes:
	  Add a note to change handoff use in fakesrc to be usable in
	  a more generic way (fakesrc should be renamed to appsrc or so).
	* gst/elements/gstfakesrc.c: (gst_fakesrc_class_init):
	  Change signal type to scope, so we can fill the buffer in the
	  handoff handler (that's the whole use of this signal...).

2004-04-01  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/other-ntoone.xml:
	  Document muxers and n-to-1 elements.

2004-04-01  Martin Soto  <martinsoto@users.sourceforge.net>

	* gst/registries/gstxmlregistry.c
	(gst_xml_registry_rebuild_recurse): Fix the algorithm to
	determine if a file is a G_MODULE. The old one discards paths
	containing "so" somewhere in the middle. My home directory is
	called "soto". Go figure...

2004-03-31  David Schleef  <ds@schleef.org>

	* gst/gstbuffer.c: (gst_buffer_join):  Add function gst_buffer_join()
	to eventually deprecate gst_buffer_merge().  (bug: #136408)
	* gst/gstbuffer.h:

2004-03-31  David Schleef  <ds@schleef.org>

	* gst/gstvalue.c: (gst_value_union_int_int_range),
	(gst_value_union_int_range_int_range), (gst_value_can_union),
	(gst_value_union), (_gst_value_initialize):  Add some union
	implementations.  We didn't have any previously.
	* testsuite/caps/Makefile.am:
	* testsuite/caps/audioscale.c: (gst_audioscale_expand_value),
	(gst_audioscale_getcaps), (test_caps), (main): A little test
	that is the same as the caps manipulation in audioscale.

2004-03-30  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* docs/faq/general.xml:
	  add entry about "does gst support format X?"

2004-03-30  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstthread.c:
	  fix docs
	* gst/gstutils.h:
	  fix GST_BOILERPLATE_FULL to not throw casting errors on C++

2004-03-30  Benjamin Otte  <otte@gnome.org>

	* gst/elements/gstbufferstore.c: (gst_buffer_store_get_buffer):
	  set the offset of the buffer to the requested offset
	* gst/elements/gsttypefind.c: (stop_typefinding):
	  revert patch 1.18 (which I unfortunately don't know the reason for).
	  This is needed to allow downstream elements to seek. Otherwise
	  typefind might overwrite a previous seek by downstream elements.
	  This lead to errors with id3tag and typefind on some mp3s.
	* gst/schedulers/entryscheduler.c: (COTHREADS_TYPE),
	(gst_entry_scheduler_iterate):
	  be more verbose when debugging

2004-03-30  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstcaps.c: (gst_caps_from_string_inplace):
          make sure we don't get NULL strings

2004-03-30  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstcaps.c:
	* gst/gstelement.c:
	* gst/gstelementfactory.c: (gst_element_factory_get_type):
	* gst/gstindex.c: (gst_index_resolver_get_type),
	(gst_index_get_type), (gst_index_factory_get_type):
	* gst/gstinfo.c:
	* gst/gstpad.c:
	* gst/gstplugin.c:
	* gst/gsturi.c: (gst_uri_handler_get_type):
	* gst/gstvalue.c:
          first batch of documentation fixes

2004-03-29  David Schleef  <ds@schleef.org>

	* docs/gst/Makefile.am:  Disable a bunch of headers from being scanned
	* docs/gst/gstreamer-docs.sgml:  More hacking
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/cothreads_compat.sgml:
	* docs/gst/tmpl/gstcaps.sgml:
	* docs/gst/tmpl/gstclock.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstevent.sgml:
	* docs/gst/tmpl/gstpad.sgml:
	* docs/gst/tmpl/gstutils.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* docs/gst/tmpl/gthread-cothreads.sgml:
	* docs/random/ds/0.9-suggested-changes:
	* gst/elements/gstfakesink.h: doc fixes
	* gst/elements/gstfakesrc.h: doc fixes
	* gst/gstcaps.c: doc fixes
	* gst/gstcaps.h: doc fixes
	* gst/gstelement.c: doc fixes
	* gst/gstelement.h: doc fixes
	* gst/gstindex.c: doc fixes
	* gst/gstinfo.c: doc fixes
	* gst/gstpad.c: doc fixes
	* gst/gstpad.h: doc fixes
	* gst/gstplugin.c: doc fixes
	* gst/gsttypefind.h: doc fixes
	* gst/gsturi.c: doc fixes
	* gst/gstvalue.c: doc fixes

2004-03-29  Colin Walters  <walters@redhat.com>

	* gst/registries/gstxmlregistry.c (get_time)
	(plugin_times_older_than_recurse):
	Use the result of stat to determine whether a path is a file,
	so we don't attempt to opendir() files.

2004-03-29  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c: (gst_pad_set_explicit_caps):
	  print caps in debugging output when setting caps failed
	* gst/schedulers/entryscheduler.c: (COTHREADS_TYPE),
	(schedule_next_element), (get_buffer), (run_chainhandler),
	(element_may_start), (gst_entry_scheduler_chain_handler),
	(gst_entry_scheduler_get_handler),
	(gst_entry_scheduler_state_transition),
	(gst_entry_scheduler_pad_link):
	  make this scheduler a testcase for mandatory
	  discont-before-first-buffer which is needed if we want to allow apps
	  to release the sound device.
	  add SCHED_ASSERT macro to print scheduler state before an assertion
	  triggers.

2004-03-29  Benjamin Otte  <otte@gnome.org>

	* COPYING:
	  replace by LGPL (former COPYING.LIB). The core is completely
	  licensed LGPL.
	* COPYING.LIB:
	  remove

2004-03-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/af.po:
	* po/sv.po:
          updated Afrikaans and Swedish

2004-03-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/LINGUAS:
	* po/az.po:
          adding Azerbaijani (Mətin Əmirov)

2004-03-28  Martin Soto  <martinsoto@users.sourceforge.net>

	* gst/gstelement.h: 
	* gst/gstelement.c (gst_element_set_time_delay): New function for
	setting element time taking into account a hardware buffering
	delay.
	(gst_element_set_time): Now just an invocation of
	gst_element_set_time_delay.
	* gst/gstclock.h: 
	* gst/gstclock.c (gst_clock_get_event_time_delay): New function
	allowing to set event times in the future.
	(gst_clock_get_event_time): Now just an invocation of
	gst_clock_get_event_time_delay.

2004-03-28  Benjamin Otte  <otte@gnome.org>

	* gst/gstbin.c: (gst_bin_set_element_sched),
	(gst_bin_unset_element_sched):
	  don't add decoupled elements to schedulers - otherwise it's
	  impossible to control if a link to a decoupled element was already
	  removed from a scheduler or not.
	* gst/schedulers/cothreads_compat.h:
	* gst/schedulers/gthread-cothreads.h:
	  add COTHREADS_TYPE macro. Make do_cothread_set_func a macro so there
	  is no "unused" warning.
	* gst/schedulers/Makefile.am:
	* gst/schedulers/entryscheduler.c:
	  add new scheduler, based on ideas from talking to David and Martin.
	  It's supposed to be small and correct. Currently it's also slow (but
	  it's not noticable)
	* examples/retag/retag.c: (main):
	* testsuite/bytestream/test1.c: (main):
	  fix missing NULLs at end of variadic functions
	* testsuite/elements/.cvsignore:
	  update

2004-03-28  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstevent.h:
	Added GST_EVENT_ANY for GstEvents that pass a GstStructure

2004-03-25  David Schleef  <ds@schleef.org>

	* docs/gst/gstreamer-sections.txt:  More doc hacking.
	* docs/gst/tmpl/gstaggregator.sgml:
	* docs/gst/tmpl/gstautoplugfactory.sgml:
	* docs/gst/tmpl/gstbin.sgml:
	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstbufferstore.sgml:
	* docs/gst/tmpl/gstfakesink.sgml:
	* docs/gst/tmpl/gstfakesrc.sgml:
	* docs/gst/tmpl/gstmd5sink.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gstsearchfuncs.sgml:
	* docs/gst/tmpl/gstshaper.sgml:
	* docs/gst/tmpl/gstspider.sgml:
	* docs/gst/tmpl/gsttee.sgml:
	* docs/gst/tmpl/gstutils.sgml:
	* docs/gst/tmpl/gstvalue.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* gst/Makefile.am:  Remove gstthreaddummy.c.  It never worked,
	and we don't support it.
	* gst/gst.c: (gst_init_get_popt_table), (init_pre), (init_post),
	(gst_use_threads), (gst_has_threads): same
	* gst/gstthreaddummy.c: same
	* gst/autoplug/gstspider.c: Make gst_spider_details static.
	* gst/autoplug/gstspider.h: same
	* gst/elements/gstaggregator.h: Remove bogus function from header
	* gst/elements/gstfakesink.h: same
	* gst/elements/gstfakesrc.h: same
	* gst/elements/gstmd5sink.h: same
	* gst/elements/gstshaper.h: same
	* gst/elements/gsttee.h: same
	* gst/gstbin.c: doc fixes
	* gst/gstbin.h: Remove unused definition.
	* gst/gstbuffer.c: doc fixes
	* gst/gstcaps.c: (gst_caps_is_always_compatible): doc fixes
	* gst/gstfilter.c: doc fixes
	* gst/gsttag.c: doc fixes
	* gst/gstvalue.c: doc fixes

2004-03-25  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-types.xml:
	  Document typefinding.
	* docs/pwg/other-oneton.xml:
	  Document one-to-n elements, demuxers and parsers.

2004-03-25  Tim-Philipp Müller <t.i.m@zen.co.uk>

	reviewed by: David Schleef  <ds@schleef.org>

	* configure.ac: Check bison version (bug #127838)

2004-03-25  David Schleef  <ds@schleef.org>

	* docs/gst/gstreamer-docs.sgml: More fine tuning.
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstautoplug.sgml:
	* docs/gst/tmpl/gststaticautoplug.sgml:
	* docs/gst/tmpl/gststaticautoplugrender.sgml:
	* docs/gst/tmpl/gstutils.sgml:
	* docs/gst/tmpl/gstxml.sgml:

2004-03-24  David Schleef  <ds@schleef.org>

	* docs/gst/gstreamer-docs.sgml:  I got tired of the reference
	manual being such complete crap, that I decided to do major
	hacking of it.  This checkin replaces any fine tuning that
	may have been done previously, with the benefit of actually
	being complete for much of the API that was changed since
	0.6.  Further fine tuning will occur shortly.  (bug #134721)
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/GstBin.sgml:
	* docs/gst/tmpl/GstBuffer.sgml:
	* docs/gst/tmpl/GstCaps.sgml:
	* docs/gst/tmpl/GstClock.sgml:
	* docs/gst/tmpl/GstCompat.sgml:
	* docs/gst/tmpl/GstData.sgml:
	* docs/gst/tmpl/GstElement.sgml:
	* docs/gst/tmpl/GstEvent.sgml:
	* docs/gst/tmpl/GstIndex.sgml:
	* docs/gst/tmpl/GstStructure.sgml:
	* docs/gst/tmpl/GstTag.sgml:
	* docs/gst/tmpl/cothreads.sgml:
	* docs/gst/tmpl/cothreads_compat.sgml:
	* docs/gst/tmpl/gettext.sgml:
	* docs/gst/tmpl/grammar.tab.sgml:
	* docs/gst/tmpl/gst-i18n-app.sgml:
	* docs/gst/tmpl/gst-i18n-lib.sgml:
	* docs/gst/tmpl/gst.sgml:
	* docs/gst/tmpl/gst_private.sgml:
	* docs/gst/tmpl/gstaggregator.sgml:
	* docs/gst/tmpl/gstarch.sgml:
	* docs/gst/tmpl/gstatomic.sgml:
	* docs/gst/tmpl/gstatomic_impl.sgml:
	* docs/gst/tmpl/gstbin.sgml:
	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstbufferstore.sgml:
	* docs/gst/tmpl/gstcaps.sgml:
	* docs/gst/tmpl/gstclock.sgml:
	* docs/gst/tmpl/gstcompat.sgml:
	* docs/gst/tmpl/gstconfig.sgml:
	* docs/gst/tmpl/gstcpu.sgml:
	* docs/gst/tmpl/gstdata.sgml:
	* docs/gst/tmpl/gstdata_private.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstenumtypes.sgml:
	* docs/gst/tmpl/gsterror.sgml:
	* docs/gst/tmpl/gstevent.sgml:
	* docs/gst/tmpl/gstfakesink.sgml:
	* docs/gst/tmpl/gstfakesrc.sgml:
	* docs/gst/tmpl/gstfilesink.sgml:
	* docs/gst/tmpl/gstfilter.sgml:
	* docs/gst/tmpl/gstindex.sgml:
	* docs/gst/tmpl/gstinfo.sgml:
	* docs/gst/tmpl/gstinterface.sgml:
	* docs/gst/tmpl/gstlog.sgml:
	* docs/gst/tmpl/gstmacros.sgml:
	* docs/gst/tmpl/gstmarshal.sgml:
	* docs/gst/tmpl/gstmd5sink.sgml:
	* docs/gst/tmpl/gstmultifilesrc.sgml:
	* docs/gst/tmpl/gstobject.sgml:
	* docs/gst/tmpl/gstpad.sgml:
	* docs/gst/tmpl/gstparse.sgml:
	* docs/gst/tmpl/gstpipeline.sgml:
	* docs/gst/tmpl/gstplugin.sgml:
	* docs/gst/tmpl/gstpluginfeature.sgml:
	* docs/gst/tmpl/gstqueue.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gstregistry.sgml:
	* docs/gst/tmpl/gstregistrypool.sgml:
	* docs/gst/tmpl/gstscheduler.sgml:
	* docs/gst/tmpl/gstsearchfuncs.sgml:
	* docs/gst/tmpl/gstshaper.sgml:
	* docs/gst/tmpl/gstspider.sgml:
	* docs/gst/tmpl/gstspideridentity.sgml:
	* docs/gst/tmpl/gststructure.sgml:
	* docs/gst/tmpl/gstsystemclock.sgml:
	* docs/gst/tmpl/gsttag.sgml:
	* docs/gst/tmpl/gsttaginterface.sgml:
	* docs/gst/tmpl/gsttee.sgml:
	* docs/gst/tmpl/gstthread.sgml:
	* docs/gst/tmpl/gsttrace.sgml:
	* docs/gst/tmpl/gsttrashstack.sgml:
	* docs/gst/tmpl/gsttypefind.sgml:
	* docs/gst/tmpl/gsttypes.sgml:
	* docs/gst/tmpl/gsturi.sgml:
	* docs/gst/tmpl/gsturitype.sgml:
	* docs/gst/tmpl/gstutils.sgml:
	* docs/gst/tmpl/gstvalue.sgml:
	* docs/gst/tmpl/gstversion.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* docs/gst/tmpl/gstxmlregistry.sgml:
	* docs/gst/tmpl/gthread-cothreads.sgml:
	* docs/gst/tmpl/types.sgml:

2004-03-24  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/other-sink.xml:
	* docs/pwg/other-source.xml:
	  Documentation on how to write source and sink elements. Other
	  stuff in chapter 4 (1-to-n/demuxer, n-to-1/muxer, n-to-n,
	  manager, autoplugger) are all still pending.

2004-03-25  Benjamin Otte  <otte@gnome.org>

	* testsuite/elements/Makefile.am:
	* testsuite/elements/gst-compprep-check:
	  add check to make sure gst-compprep works
	* testsuite/elements/gst-inspect-check.in:
	  improve initialization output
	* testsuite/Makefile.am:
	* testsuite/gst-inspect-check:
	  remove old file

2004-03-24  David Schleef  <ds@schleef.org>

	* testsuite/elements/Makefile.am:
	* testsuite/elements/gst-inspect-check.in: Add gst-inspect-check
	to the testsuite.

2004-03-24  Benjamin Otte  <otte@gnome.org>

	* libs/gst/control/dparam.c: (gst_dparam_attach),
	(gst_dparam_detach):
	* libs/gst/control/dparammanager.c: (gst_dpman_init):
	  fix lvalue casts for real

2004-03-24  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_src_wrapper):
	* gst/schedulers/gstoptimalscheduler.c:
	(gst_opt_scheduler_loop_wrapper), (gst_opt_scheduler_get_wrapper),
	(pad_clear_queued), (gst_opt_scheduler_add_element),
	(gst_opt_scheduler_remove_element):
	  fix GStreamer to not have issues with lvalue casts anymore (fixes
	  #136841)

2004-03-24  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c:
	  add documentation about a gobject quirk where the object hasn't the
	  correct class pointer set on initialization
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_src_wrapper):
	  make sure to not run into an infinite loop

2004-03-22  Benjamin Otte  <otte@gnome.org>

	* gst/gstutils.c: (gst_util_dump_mem):
	* gst/gstutils.h:
	  first argument of gst_util_dump_mem should be const

2004-03-22  Johan Dahlin  <johan@gnome.org>

	* gst/gstvalue.h: Clean up a little bit.

2004-03-21  Tim-Philipp Müller <t.i.m@zen.co.uk>

	reviewed by Benjamin Otte  <otte@gnome.org>

	* gst/autoplug/gstspider.c: (gst_spider_dispose):
	* gst/elements/gstaggregator.c: (gst_aggregator_finalize),
	(gst_aggregator_class_init), (gst_aggregator_init):
	* gst/elements/gstfilesrc.c: (gst_filesrc_init),
	(gst_filesrc_dispose), (gst_filesrc_set_location):
	* gst/elements/gstidentity.c: (gst_identity_finalize),
	(gst_identity_class_init), (gst_identity_chain):
	* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_open_file):
	* gst/elements/gststatistics.c: (gst_statistics_finalize),
	(gst_statistics_class_init):
	* gst/elements/gsttee.c: (gst_tee_finalize), (gst_tee_class_init),
	(gst_tee_get_property):
	  clean up used memory in this elements correctly on teardown (closes
	  #137279)

2004-03-20  Colin Walters  <walters@redhat.com>

	* gst/registries/gstxmlregistry.c:
	(gst_xml_registry_open_func, gst_xml_registry_close_func): Make
	registry saving atomic.

2004-03-20  Colin Walters  <walters@redhat.com>

	* gst/registries/gstxmlregistry.c (gst_xml_registry_get_perms_func):
        Just use
	access() instead of actually creating and deleting files.

2004-03-18  David Schleef  <ds@schleef.org>

	* configure.ac:  Remove HAVE_ATOMIC_H test, since it's unused.
	(bug #137625)

2004-03-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/sv.po: updated translation (Christian Rose)

2004-03-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstfilesink.c: (gst_filesink_get_formats),
	(gst_filesink_get_query_types), (_do_init),
	(gst_filesink_handle_event), (gst_filesink_uri_get_protocols):
          return FALSE silently
	* po/af.po: updated translation (Petri Jooste)

2004-03-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am:
	* configure.ac:
          dist common properly
	* po/af.po:
	* po/fr.po:
	* po/nl.po:
	* po/sr.po:
	* po/sv.po:
          refreshing translations

2004-03-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/LINGUAS:
	* po/sv.po:
	* po/af.po:
          adding Swedish (Christian Rose) and Afrikaans (Petri Jooste)

2004-03-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am: use common/release.mak

2004-03-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/faq/gst-uninstalled:
          adding gst-monkeysaudio to the list of possible plugin dirs

2004-03-16  David Schleef  <ds@schleef.org>

	* gst/gst.c: (gst_get_popt_options), (gst_init_get_popt_table),
	(gst_init_check_with_popt_table):  Fix some gettext strings to
	make them easier to translate.  Required making the strings
	non-const.

2004-03-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: bump nano to 1

=== release 0.8.0 ===

2004-03-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: release 0.8.0, "Executive Slacks"

2004-03-16  Johan Dahlin  <johan@gnome.org>

	* gst/schedulers/gstoptimalscheduler.c
	(gst_opt_scheduler_pad_unlink): Remove double ;,
        spotted by Scott Wheeler

2004-03-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: bump libtool version

2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstcaps.h:
	* gst/gststructure.h:
          add reserved padding

2004-03-15  Benjamin Otte  <otte@gnome.org>

	* gst/elements/gstfdsrc.c: (gst_fdsrc_get):
	  set the first parameter for select call correctly.
	  (fixes #137230)

2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* *.c,*.h: don't mix tabs and spaces

2004-03-15  Johan Dahlin  <johan@gnome.org>

	* gst/schedulers/gstoptimalscheduler.c
	(gst_opt_scheduler_pad_unlink): Fix bug that causes totem to
	crash on MPEG playback. My boolean arithmetic is a bit rusty.

	* tools/Makefile.am (EXTRA_DIST): Add gst-indent
	
2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* testsuite/Rules:
          fix gst-register rules

2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* testsuite/Rules:
          use versioned gst-register

2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/libs/gstreamer-libs-sections.txt:
          remove </SUBSECTION>
	* gst/gstplugin.c:
	* gst/gstregistry.c: (gst_registry_add_plugin):
	* gst/registries/gstxmlregistry.c: (gst_xml_registry_get_type),
	(gst_xml_registry_open_func), (gst_xml_registry_close_func):
          add debugging and fix some comment blocks

2004-03-15  Johan Dahlin  <johan@gnome.org>

	* *.h: Revert indent changes.
	
2004-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/registries/gstxmlregistry.c: (gst_xml_registry_load_plugin):
          g_error_free the g_error
	* tools/gst-feedback-m.m:
          check for other versions of gstreamer
	* tools/gst-indent:
          use sh, not bash

2004-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/gst-register.c: do not spill paths when registries are not
          writable, until we fix the "user running gst-register" case.

2004-03-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* *.c, *.h: commit of gst-indent run on core

2004-03-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/gst-indent:
	* tools/Makefile.am:
	  add our indentation style as a script

2004-03-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/sr.po:
	* po/LINGUAS:
	  added Serbian translation

2004-03-13  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c:
	  add documentation note about gst_element_found_tags_for_pad not
	  being usable in getfunctions. (see #137042)

2004-03-12  David Schleef  <ds@schleef.org>

	* gst/gstcaps.h: jdahlin, what are you smoking?  We can't just
	change API right now!  Readd gst_caps_is_simple() macro.
	* gst/gstelement.c: (gst_element_base_class_finalize): Fix
	uninitialized variable.  I'd bet this caused crashes.
	* gst/gstinfo.c: (gst_debug_print_object):  Fix 64-bit cleanliness.

2004-03-12  Johan Dahlin  <johan@gnome.org>

	* gst/gstcaps.h (GST_CAPS_IS_SIMPLE): Capitalize macro
	* gst/gstcaps.h: Clean up

	* gst/gst.c (init_post): call gst_caps_get_type() instead of
	_gst_caps_initalize()

	* gst/gstcaps.c: Style fixes, stay closer to glib and friends
	(_gst_caps_initialize): Remove, in favor for gst_caps_get_type()

	* gst/gststructure.c (gst_structure_get_type): Ditto

	* gst/gststructure.h: Ditto
	
2004-03-11  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstqueue.c: (gst_queue_init):
	  Reset default max. values in queues. Reason is simply to avoid
	  braindead use. If you want wider values, use the properties. The
	  default is supposed to always work. Wider values would make this
	  beast a memory hog by default (250 full-PAL RGB32 video frames?
	  That's 440 MB! No thank you).

2004-03-10  David Schleef  <ds@schleef.org>

	* tools/gst-run.c: (main):  Fix crash when no relevant tools
	were found.  (bug #136793)

2004-03-10  Johan Dahlin  <johan@gnome.org>

	* gst/schedulers/gstoptimalscheduler.c
	(gst_opt_scheduler_pad_unlink): Implement unlink for elements with
	links to elements within the same group, so we can finally remove
	that annoying warning. Refactor the code a little bit
	(group_dec_links_for_element): Split out

2004-03-09  David Schleef  <ds@schleef.org>

	* docs/manual/dparams-app.xml:  Fix to handle double dparams.
	(bug #134863)

2004-03-09  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: first bug fix due to major/minor bump

2004-03-09  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: bump nano to 1

=== release 0.7.6 ===

2004-03-09  Thomas Vander Stichele  <thomas at apestaart dot org>

	* NEWS:
	* RELEASE:
	* configure.ac:
          releasing 0.7.6, "Almost"
	* po/fr.po:
	* po/nl.po:
	* tools/Makefile.am:
	* tools/gst-feedback-m.m:
          unversioned source

2004-03-09  Johan Dahlin  <johan@gnome.org>

	Reviewed by: Thomas Vander Stichele

	* gst/gstelement.c (gst_element_class_init): register second
	parameter as GST_TYPE_G_ERROR instead of G_TYPE_POINTER, so
	language bindings can (de)marshall correctly.

	* gst/gsterror.h: Add GST_TYPE_G_ERROR and cleanup a little bit

	* gst/gsterror.c (gst_g_error_get_type): New function

	* gst/gstmarshal.list: Remove VOID:OBJECT,POINTER,STRING, replace
	with VOID:OBJECT,OBJECT,STRING 

2004-03-10  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/registries/gstxmlregistry.c: (gst_xml_registry_load):
	Free a leaked g_timer on early returns.

2004-03-08  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-types.xml:
	  Add cinepak description.

2004-03-07  David Schleef  <ds@schleef.org>

	* docs/random/mimetypes:  Added cinepak description

2004-03-07  Andy Wingo  <wingo@pobox.com>

	* gst/gstbin.c (gst_bin_remove): Debugging fixes.

	* gst/schedulers/gstoptimalscheduler.c (destroy_group): Assert
	there are no links to other groups when a group is destroyed.
	(gst_opt_scheduler_pad_unlink): If the unlink means an element is
	removed from a group, make sure the link count to elements linked
	to other pads is appropriately decremented. This really fixes
	#135672.

	The 1.60->1.61 patch has been reapplied in light of this fix.

	* gst/gstelement.c (gst_element_dispose): Really protect against
	multiple invocations this time.

2004-03-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gsttag.sgml:
          remove some deprecated functions, document some existing ones
	* gst/gsttag.c: (gst_tag_get_flag):
	* gst/gsttag.h:
          add accessor function

2004-03-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gsttag.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* gst/gsttag.c: (gst_tag_get_flag):
	* gst/gsttag.h:

2004-03-06  Christophe Fergeau  <teuf@gnome.org>

	* gst/autoplug/gstspider.c: (gst_spider_identity_plug): fixed caps
	leak

2004-03-05  David Schleef  <ds@schleef.org>

	* REQUIREMENTS: Add bison and flex.
	* configure.ac: Fix comment about bison.
	* docs/random/ds/0.9-suggested-changes: yer ma
	* tools/gst-inspect.c: (print_element_info):  Fix warning.

2004-03-05  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c: (gst_element_error_full):
	  revert recent recursive state changing commit - messing with other
	  elements' states is evil and should be done by apps only.

2004-03-05  Benjamin Otte  <otte@gnome.org>

	* gst/gstelement.c: (gst_element_get_compatible_pad_template):
	  check for empty intersection instead of NULL caps
	(gst_element_get_compatible_pad_filtered):
	  remove old workaround that is only a bug nowadays

2004-03-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_error_full):
          make elements try to recursively change state to PAUSED on all
          parents after an error to suppress ensuing warnings
	* gst/parse/grammar.y:
          make it check if it was able to sync the state, and throw an error
          if not, so stuff like
          oggdemux ! vorbisdec ! osssink gets caught

2004-03-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: use ${libdir} for PLUGINS_DIR since on 64bit
          it contains lib64; use AS_AC_EXPAND to handle it properly

2004-03-05  David Schleef  <ds@schleef.org>

	* gst/gstcpuid_i386.s:  Remove unused code
	* libs/gst/getbits/getbits.c: (gst_getbits_init),
	(gst_getbits_newbuf): Remove MMX code
	* libs/gst/getbits/getbits.h: Remove MMX code

2004-03-04  David I. Lehn  <dlehn@users.sourceforge.net>

	* debian/.cvsignore:
	* debian/README.Debian:
	* debian/changelog:
	* debian/control:
	* debian/control.in:
	* debian/copyright:
	* debian/gstreamer-core-libs-dev.files:
	* debian/gstreamer-core-libs.files:
	* debian/gstreamer-core.files:
	* debian/gstreamer-core.postinst:
	* debian/gstreamer-core.postrm:
	* debian/gstreamer-doc.files:
	* debian/gstreamer-doc.links:
	* debian/gstreamer-doc.lintian:
	* debian/gstreamer-runtime.files:
	* debian/gstreamer-runtime.manpages:
	* debian/gstreamer-runtime.postinst:
	* debian/gstreamer-runtime.postrm:
	* debian/gstreamer-tools.files:
	* debian/gstreamer-tools.manpages:
	* debian/libgstreamer-dev.files:
	* debian/libgstreamer0.4.1.files:
	* debian/libgstreamerVERSION.files:
	* debian/rules:
	Debian package info not maintained here.

2004-03-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_class_init):
	* gst/gstbin.c: (gst_bin_class_init):
	* gst/gstelement.c: (gst_element_class_init):
	* gst/gstindex.c: (gst_index_class_init):
	* gst/gstobject.c: (gst_object_class_init),
	(gst_signal_object_class_init):
	* gst/gstpad.c: (gst_pad_template_class_init):
	* gst/gstregistry.c: (gst_registry_class_init):
	* gst/gsturi.c: (gst_uri_handler_base_init):
	* gst/gstxml.c: (gst_xml_class_init):
	* libs/gst/control/dparam.c: (gst_dparam_class_init):
	* libs/gst/control/dparammanager.c: (gst_dpman_class_init):
          make all signal names use dashes instead of underscore

2004-03-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: AC_SUBST GLIB_ONLY CFLAGS and LIBS

2004-03-03  Benjamin Otte  <otte@gnome.org>

	* gst/schedulers/gstoptimalscheduler.c:
	  revert last commit by Andy Wingo. It causes segfaults on unreffing
	  in Rhythmbox. (see bug #135672)

2004-03-02  Christophe Fergeau  <teuf@gnome.org>

	* po/fr.po: fix typo

2004-03-02  Christophe Fergeau  <teuf@gnome.org>

	* tools/gst-inspect.c: (main): 
	* tools/gst-launch.c: (main): add calls to bind_textdomain_codeset

2004-03-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
          get GLIB_ONLY and POPT flags for the nonversioned binaries
	* tools/Makefile.am:
          use them

2004-03-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gst.c: (init_post):
          change so that GST_REGISTRY now is where the global registry gets
          saved, since that is where plugins now get attached to first, and
          spilled over to the user registry.  Note that in the case of using
          GST_REGISTRY env var, we don't want to affect any real registries
          beyond the one given by this var, and thus we don't set a user
          registry to spill to.  So make sure GST_REGISTRY is writable.

2004-03-01  David Schleef  <ds@schleef.org>

	* AUTHORS:  Added some names.  Add yourself if you're missing.

2004-03-01  David Schleef  <ds@schleef.org>

	* MAINTAINERS: Add

2004-03-01  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
          remove whitespace
	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstdata.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gstxml.sgml:
          doc update
	* docs/manuals.mak:
          add a FIXME
	* docs/pwg/intro-preface.xml:
	* docs/pwg/pwg.xml:
          remove GNOME
	* gst/gst.c: (init_post):
          try GST_PLUGIN_PATH paths for the _global_registry first
	* gst/gstelement.h:
          add the error message as well, otherwise (null) debug info doesn't
          make much sense
	* tools/gst-register.c: (main):
          spill paths to next registry if this registry is not writable
	* po/fr.po:
	* po/nl.po:
          translation updates

2004-03-01  Johan Dahlin  <johan@gnome.org>

	* gst/gstbuffer.c (_gst_buffer_initialize): 
	* gst/gstdata.c (gst_data_get_type): 
	* gst/gstevent.c (_gst_event_initialize): Use gst_data_copy,
	instead of ref, since some applications that uses GBoxed
	routines depends on a function that actually returns a copy.

2004-02-27  Benjamin Otte  <otte@gnome.org>

	* gst/gstbuffer.h:
	  remove gst_buffer_free, use gst_data_unref
	* gst/gstdata.c: (gst_data_get_type):
	  use refcounting in GstData GBoxed registration
	* gst/gstdata.h:
	  remove gst_data_free, use gst_data_unref

2004-02-27  Johan Dahlin  <johan@gnome.org>

	* gst/gstdata.c (gst_data_get_type): New function, register
	GstData as a GBoxed type.

	* gst/gstdata.h (GST_TYPE_DATA): New macro

2004-02-27  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am:
	* gstreamer.spec.in:
          put back RELEASE
	* gst/Makefile.am:
          clean up non-disting of built files
	* testsuite/debug/commandline.c:
          test fix for option rename

2004-02-26  David Schleef  <ds@schleef.org>

	* configure.ac:  We don't really need glib-2.3.  Also remove
	some unneeded checks for library functions.
	* gst/Makefile.am:  Instead, we need to not dist files created
	by glib-genmarshal.

2004-02-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
          bump glib required version to 2.3.0 for g_value_takes_boxed

 2004-02-25  Christian Fredrik Kalager Schaller <uraeus@gnome.org>

	* common/m4/gst-docs.m4
	change flavour text from enable to disable as enable is our default
	closes bug Bug 135304

=== release 0.7.5 ===
 
 2004-02-26  Thomas Vander Stichele  <thomas at apestaart dot org>
 
	* NEWS:
          instate NEWS file
	* Makefile.am:
	* gstreamer.spec.in:
	* RELEASE:
          put back release
	* configure.ac:
	* docs/random/release:
          more updates

2004-02-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsttag.c: (_gst_tag_initialize):
	* po/fr.po:
	* po/nl.po:
          remove hyphen from codec tags

2004-02-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/parse/Makefile.am:
          fix dependency so that a make from a clean build works the first
          time

2004-02-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/random/release:
          update release strategy
	* po/fr.po:
          auto-update po file
	* po/nl.po:
          update dutch translation

2004-02-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manual/debugging.xml:
        fix manual for new debugging system

2004-02-25  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.c (gst_pad_link_prepare): Re-add
	gst_pad_link_prepare. Please email the list with specific reasons
	for reverting.

2004-02-24  Andy Wingo  <wingo@pobox.com>

	* gst/gstelement.c (gst_element_dispose): Protect against multiple
	invocations.

	* gst/schedulers/gstoptimalscheduler.c:
	I added a mess of prototypes at the top of the file by way of
	documentation. Some of the operations on chains and groups were
	re-organized.

	(create_group): Added a type argument so if the group is enabled,
	the setup_group_scheduler knows what to do.
	(group_elements): Added a type argument here, too, to be passed on
	to create_group.
	(group_element_set_enabled): If an unlinked PLAYING element is
	added to a bin, we have to create a new group to hold the element,
	and this function will be called before the group is added to the
	chain. Thus we have a valid case for group->chain==NULL. Instead
	of calling chain_group_set_enabled, just set the flag on the group
	(the chain's status will be set when the group is added to it).
	(gst_opt_scheduler_state_transition, chain_group_set_enabled):
	Setup the group scheduler when the group is enabled, not
	specifically when an element goes PAUSED->PLAYING. This means
	PLAYING elements can be added, linked, and scheduled into a
	PLAYING pipeline, as was intended.
	(add_to_group): Don't ref the group twice. I don't know when this
	double-ref got in here. Removing it has the potential to cause
	segfaults if other parts of the scheduler are buggy. If you find
	that the scheduler is segfaulting for you, put in an extra ref
	here and see if that hacks over the underlying issue. Of course,
	then find out what code is unreffing a group it doesn't own...
	(create_group): Make the extra refcount floating, and remove it
	after adding the element. This means that...
	(unref_group): Destroy when the refcount reaches 0, not 1, like
	every other refcounted object in the known universe.
	(remove_from_group): When a group becomes empty, set it to be not
	active, and remove it from its chain. Don't unref it again,
	there's no floating reference any more.
	(destroy_group): We have to remove the group from the chain in
	remove_from_group (rather than here) to break refcounting cycles
	(the chain always has a ref on the group). So assert that
	group->chain==NULL.
	(ref_group_by_count): Removed, it was commented out anyway.
	(merge_chains): Use the remove_from_chain and add_to_chain
	primitives to do the reparenting, instead of rolling our own
	implementation.
	(add_to_chain): The first non-disabled group in the chain's group
	list will be the entry point for the chain. Because buffers can
	accumulate in loop elements' peer bufpens, we preferentially
	schedule loop groups before get groups to avoid unnecessary
	execution of get-based groups when the bufpens are already full.
	(gst_opt_scheduler_schedule_run_queue): Debug fixes.
	(get_group_schedule_function): Ditto.
	(loop_group_schedule_function): Ditto.
	(gst_opt_scheduler_loop_wrapper): Ditto.
	(gst_opt_scheduler_iterate): Ditto.

	I understand the opt scheduler now, yippee!

	* gst/gstpad.c: All throughout, added FIXMEs to look at for 0.9.
	(gst_pad_get_name, gst_pad_set_chain_function) 
	(gst_pad_set_get_function, gst_pad_set_event_function) 
	(gst_pad_set_event_mask_function, gst_pad_get_event_masks) 
	(gst_pad_get_event_masks_default, gst_pad_set_convert_function) 
	(gst_pad_set_query_function, gst_pad_get_query_types) 
	(gst_pad_get_query_types_default) 
	(gst_pad_set_internal_link_function) 
	(gst_pad_set_formats_function, gst_pad_set_link_function) 
	(gst_pad_set_fixate_function, gst_pad_set_getcaps_function) 
	(gst_pad_set_bufferalloc_function, gst_pad_unlink) 
	(gst_pad_renegotiate, gst_pad_set_parent, gst_pad_get_parent) 
	(gst_pad_add_ghost_pad, gst_pad_proxy_getcaps) 
	(gst_pad_proxy_pad_link, gst_pad_proxy_fixate) 
	(gst_pad_get_pad_template_caps, gst_pad_check_compatibility) 
	(gst_pad_get_peer, gst_pad_get_allowed_caps) 
	(gst_pad_alloc_buffer, gst_pad_push, gst_pad_pull) 
	(gst_pad_selectv, gst_pad_select, gst_pad_template_get_caps) 
	(gst_pad_event_default_dispatch, gst_pad_event_default) 
	(gst_pad_dispatcher, gst_pad_send_event, gst_pad_convert_default) 
	(gst_pad_convert, gst_pad_query_default, gst_pad_query) 
	(gst_pad_get_formats_default, gst_pad_get_formats): Better
	argument checks, and some doc fixes.

	(gst_pad_custom_new_from_template): Um, does anyone
	use these functions? Actually make a custom pad instead of a
	normal one.
	(gst_pad_try_set_caps): Transpose some checks.
	(gst_pad_try_set_caps_nonfixed): Same, and use a macro to check if
	the pad is in negotiation.
	(gst_pad_try_relink_filtered): Use pad_link_prepare.
	
	* gst/gstelement.c: Remove prototypes also defined in gstclock.h.

	* gst/gstelement.h: 
	* gst/gstclock.h: Un-deprecate the old clocking API, as discussed
	on the list.

2004-02-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstbin.c: (gst_bin_add):
          add error for not being able to add elements

2004-02-22  Julien MOUTTE <julien@moutte.net>

	* gst/gsttag.c: (_gst_tag_initialize): Registering 2 new tags,
	audio-codec and video-codec.

2004-02-22  Benjamin Otte  <otte@gnome.org>

	reported by: Padraig O'Briain <padraig.obriain@sun.com>

	* autogen.sh:
	  replace test -e with test -x for mkinstalldirs to be more portable.
	  (fixes #134816)

2004-02-22  Benjamin Otte  <otte@gnome.org>

	* gst/gstpad.c:
	  revert last patch from Andy, it makes gst_pad_can_link_filtered much
	  too noisy
	* gst/gsttag.c: (_gst_tag_initialize):
	* gst/gsttag.h:
	  add GST_TAG_ALBUM_VOLUME_{COUNT,NUMBER}
	* libs/gst/control/dparam.c: (gst_dparam_attach):
	* libs/gst/control/dparammanager.c: (gst_dpman_attach_dparam):
	  check that types for attached dparams match

2004-02-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstfilesink.c: (gst_filesink_open_file):
	* gst/elements/gstfilesrc.c: (gst_filesrc_open_file):
	* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_open_file):
          fix errors

2004-02-20  Andy Wingo  <wingo@pobox.com>

	* gst/gstbin.c:
	* gst/gstbuffer.c:
	* gst/gstplugin.c:
	* gst/registries/gstxmlregistry.c: 
	* gst/schedulers/gstoptimalscheduler.c: Debugging tweaks.

	* gst/gstelement.c (gst_element_set_scheduler): Debugging fixes.
	(gst_element_add_pad): DEBUG->INFO, some fixes.
	(gst_element_get_compatible_pad_template): Just see if the
	templates' caps intersect, not if one is a strict subset of the
	other. This conforms more to what gst_pad_link_intersect() does.
	(gst_element_class_add_pad_template): Don't memcpy the pad
	template, just ref it.
	(gst_element_get_compatible_pad_filtered): Clean up debug messages

	* gst/gstpad.c (gst_pad_can_link_filtered): Debug a true result.
	(gst_pad_link_filtered): Debug changes.
	(gst_pad_link_prepare): New function, consolidated from
	can_link_filtered and link_filtered.

	* gst/parse/grammar.y (gst_parse_perform_link): Made INFO output
	look more like that of the functions in gstelement.c

	* gst/gstinfo.c (gst_debug_print_object): Put a space before the
	object, and return the empty string if object is NULL.

	* gst/parse/parse.l: Remove trailing newlines when calling PRINT.
	* gst/parse/grammar.y (YYFPRINTF): Log bison debugging info via
	LOG, not DEBUG. We still get flex info on debug.

	* gst/registries/gstxmlregistry.c (gst_xml_registry_load): Make
	debug string more verbose.
	(plugin_times_older_than): DEBUG->LOG.

2004-02-20  Julien MOUTTE <julien@moutte.net>

	* gst/gsttag.h: Adding video-codec and audio-codec for demuxers which
	will emit found_tag for each stream they demux with the codec.

2004-02-20  Benjamin Otte  <otte@gnome.org>

	* gst/gstevent.c: (_gst_event_copy), (_gst_event_free):
	  copy navigation event correctly. Check freeing tag lists. 
	* gst/gstthread.c: (gst_thread_change_state):
	  don't abort() on state changing mess - it might happen because of
	  bugs.
	* gst/gstvalue.c: (gst_value_set_caps), (gst_value_get_caps):
	  use boxed functions
	* gst/gstvalue.h:
	  fix GST_VALUE_HOLDS_CAPS

2004-02-19  David Schleef  <ds@schleef.org>

	* gst/gstinfo.h:  Copy G_STRFUNC implementation from glib-2.4
	and use it for GST_FUNCTION.  (bug #134750)

2004-02-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/fr.po:
	* po/nl.po:
          updating translations

2004-02-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/gst-run.c: (get_candidates), (main): some fixes from jdahlin

2004-02-18  kost@imn.htwk-leipzig.de

	reviewed by: David Schleef  <ds@schleef.org>

	* docs/libs/gstreamer-libs-sections.txt:  Add missing sections
	for libgstcontrol.

2004-02-18  David Schleef  <ds@schleef.org>

	* libs/gst/control/dparam.c: (gst_dparam_class_init):
	* libs/gst/control/dparam_smooth.c: (gst_dpsmooth_class_init),
	(gst_dpsmooth_new): Additional fixes to get double dparams working.
	* tools/gst-inspect.c: (print_element_info): Support dumping of
	double dparam information.

2004-02-17  David Schleef  <ds@schleef.org>

	* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_class_init):
	Use G_TYPE_STRING in signal prototype instead of G_TYPE_POINTER.
	* gst/elements/gsttypefind.c: (gst_type_find_element_class_init):
	Use GST_TYPE_CAPS in signal prototype.
	* gst/gstcaps.c: (_gst_caps_initialize), (gst_caps_copy_conditional):
	Convert GST_TYPE_CAPS to boxed.
	* gst/gstelement.c: (gst_element_class_init):
	Use GST_TYPE_TAG_LIST in signal prototype.
	* gst/gstindex.c: (gst_index_class_init):
	* gst/gstindex.h:
	Add GST_TYPE_INDEX_ENTRY type.
	* gst/gstmarshal.list:
	Add necessary marshal types.
	* gst/gstpad.c: (gst_real_pad_class_init),
	(_gst_real_pad_fixate_accumulator), (gst_pad_link_fixate),
	(gst_pad_recover_caps_error):
	Use GST_TYPE_CAPS in signal prototypes.  Fix some debugging strings.
	* gst/gststructure.c: (_gst_structure_initialize),
	(gst_structure_copy), (_gst_structure_copy_conditional):
	* gst/gststructure.h:
	Convert GST_TYPE_STRUCTURE to boxed.
	* gst/gsttag.c: (gst_tag_list_get_type):
	* gst/gsttag.h:
	Add GST_TYPE_TAG_LIST type.

2004-02-17  Julien MOUTTE  <julien@moutte.net>

	* gst/gstpad.c: (gst_pad_try_set_caps): Reverting my change according
	to what we agreed with david.
	* gst/gstpad.h: adding GST_PAD_IS_NEGOTIATING macro.

2004-02-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/nl.po: update translation

2004-02-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/autoplug/gstspider.c: (gst_spider_identity_plug):
	  throw an error if spider is trying to play a mime type there is
          no decoder for
	* po/POTFILES.in:
          add gst/autoplug/gstspider.c for translation

2004-02-17  Julien MOUTTE  <julien@moutte.net>

	* gst/gstpad.c: (gst_pad_try_set_caps): We are nice people. Return 
	silently when the pad is negotiating.

2004-02-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/faq/Makefile.am:
          add script to run gstreamer uninstalled 
	* docs/faq/faq.xml:
	* docs/faq/developing.xml:
	* docs/faq/gst-uninstalled:
          extract script to run gstreamer uninstalled
	* docs/manuals.mak:
          add EXTRA_SOURCES variable for Makefile.am's to set to
          use additional SOURCE files for the doc build

2004-02-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstatomic_impl.h: Fedora 2 test package patch for S390

2004-02-15  Julien MOUTTE  <julien@moutte.net>

	* gst/gstbin.c: (gst_bin_change_state), (gst_bin_iterate): Fix a big
	bug that was breaking pipelines like sinesrc ! { queue ! osssink } when
	an error was thrown by osssink. Basically a state change failure for
	an element in a different scheduling group was considered as
        successful, which means that caps nego was going on and weird stuff
        happened. Like I wrote in the comment there, if someone wants to
        revert that please drop me a mail explaining why because I really see
        no point in keeping that broken behaviour there.
	* gst/gstqueue.c: (gst_queue_get): Add a safety check as the queue CAN
	be empty, we then return NULL which will trigger a nice error when 
	pulling from the pad.

2004-02-13  David Schleef  <ds@schleef.org>

	* libs/gst/control/dparam.c: (gst_dparam_class_init),
	(gst_dparam_get_property), (gst_dparam_set_property),
	(gst_dparam_do_update_default):
	* libs/gst/control/dparam.h:
	* libs/gst/control/dparam_smooth.c: (gst_dpsmooth_class_init),
	(gst_dpsmooth_new), (gst_dpsmooth_set_property),
	(gst_dpsmooth_get_property), (gst_dpsmooth_value_changed_double),
	(gst_dpsmooth_do_update_double):
	* libs/gst/control/dparam_smooth.h:
	* libs/gst/control/dparammanager.c:
	(gst_dpman_inline_direct_update):
	Add support for double dparams.

2004-02-13  David Schleef  <ds@schleef.org>

	* gst/elements/gstfdsrc.c: (gst_fdsrc_get): Use GST_TIME_TO_TIMEVAL()
	* gst/gstclock.h: Avoid using 64-bit % operator (slow!)

2004-02-13  Mattias Wadman  <mattias@sudac.org>

	reviewed by: David Schleef  <ds@schleef.org>

	* gst/elements/gstfdsrc.c: (gst_fdsrc_class_init),
	(gst_fdsrc_init), (gst_fdsrc_set_property),
	(gst_fdsrc_get_property), (gst_fdsrc_get):
	* gst/elements/gstfdsrc.h:  Adds timeout property to fdsrc,
	and sends an EOS event if file descriptor reading times out.

2004-02-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
          add calls to AM_CONDITIONAL for subsystems for automake 1.6.x

2004-02-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac: pass required libxml version as argument
	(bug reported by Christophe Fergeau)

2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>
  
	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* docs/libs/gstreamer-libs-docs.sgml:
          version API docs

2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstinfo.c:
	* gst/gstregistrypool.c: (gst_registry_pool_plugin_filter),
	(gst_registry_pool_feature_filter):
	* gst/gstthread.c: (gst_thread_class_init):
	* gst/gstvalue.c:
          add includes exposed by building without libxml
	* gst/indexers/Makefile.am:
          do not build fileindex when LOADSAVE disabled; we should have
          a better libxml check later since fileindex depends on xml, not
          LOADSAVE or REGISTRY
	* libs/gst/control/Makefile.am:
          link with m
	* tools/Makefile.am:
          fix wrong source code for gst-xmlinspect

2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
          fix gcov help output
          move calls to and use new GST_CHECK_DISABLE_SUBSYSTEM
	* docs/random/release:
          some updated releasing notes
	* gstreamer.spec.in:
          more updates

2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/faq/faq.xml:
	* docs/manual/manual.xml:
	* docs/pwg/pwg.xml:
	* docs/pwg/titlepage.xml:
          put version in documentation

2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/Makefile.am: fix man page installation

2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  don't check for libxml when load/save and registry disabled (#105844)
	* gstreamer.spec.in:
          sync with fedora candidate spec

2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/fr.po:
	* po/nl.po:
          replace multidisksrc with multifilesrc

2004-02-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* po/POTFILES.in:
	  update to multidisksrc => multifilesrc file renaming (#134145)

2004-02-11  David Schleef  <ds@schleef.org>

	* docs/gst/tmpl/gstcaps.sgml:  Fix stuff that mentions GstProps
	* docs/gst/tmpl/gstpadtemplate.sgml: same
	* docs/gst/tmpl/gstreamer-unused.sgml: Remove GstProps
	* gst/gstobject.c: (gst_object_set_name_default): Do the memleak
	fixing dance.
	* gst/gstutils.c: Remove disabled code that uses GstProps.
	* gst/registries/gstxmlregistry.h: same
	* docs/random/ds/0.9-suggested-changes: random notes

2004-02-11  kost@imn.htwk-leipzig.de

	reviewed by: David Schleef  <ds@schleef.org>

	* gst/gstclock.c: (gst_clock_entry_new): fixes structure
	initialisation of clock (bug #134128)

2004-02-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* gst/elements/Makefile.am:
	* gst/elements/gstelements.c:
	* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_base_init),
	(gst_multifilesrc_class_init), (gst_multifilesrc_init),
	(gst_multifilesrc_set_property), (gst_multifilesrc_get_property),
	(gst_multifilesrc_get), (gst_multifilesrc_open_file),
	(gst_multifilesrc_close_file), (gst_multifilesrc_change_state):
	* gst/elements/gstmultifilesrc.h:
          rename multidisksrc to multifilesrc (part of #122200)

2004-02-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manuals.mak:
          fix automake complaints
	* gst-element-check.m4:
          fix unquotedness

2004-02-11  David Schleef  <ds@schleef.org>

	* docs/gst/Makefile.am: Call gst_init() in built gstreamer-scan.
	* gst/gstatomic_impl.h: Disable sparc implementation.

2004-02-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst-element-check.m4:
          fix underquoted macros as reported by automake 1.8.x (#133800)
	* configure.ac:
          require gettext 0.11.5 so ulonglong.m4 gets checked out and copied
          by autopoint (fixes #132996)

2004-02-10  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.c (gst_pad_custom_new): Add a FIXME, this is a hacky
	way to do inheritance.
	(gst_pad_get_event_masks, gst_pad_get_event_masks_default) 
	(gst_pad_get_query_types, gst_pad_get_query_types_default):
	Routine docs.
	(gst_pad_set_link_function, gst_pad_set_fixate_function) 
	(gst_pad_set_getcaps_function): Doc from Dave's negotation random
	doc.
	(gst_pad_unlink, gst_pad_is_linked): Docs.
	(gst_pad_renegotiate): A brief description of capsnego.
	(gst_pad_try_set_caps): Document.
	(gst_pad_try_set_caps_nonfixed): Document.
	(gst_pad_can_link_filtered, gst_pad_link_filtered): Doc fixes.
	(gst_pad_set_parent): Deprecated (although not out of the API).
	(gst_pad_get_parent): Deprecated, although many plugins use this.
	(gst_pad_add_ghost_pad, gst_pad_remove_ghost_pad): Doc that these
	are private and will go away in 0.9.
	(gst_pad_perform_negotiate): Doc.
	(gst_pad_link_unnegotiate): I think this is meant to be static.
	(gst_pad_get_negotiated_caps, gst_pad_get_pad_template_caps) 
	(gst_pad_template_get_caps_by_name, gst_pad_check_compatibility) 
	(gst_pad_get_peer): Doc updates.
	(gst_pad_caps_change_notify): Doc.
	(gst_pad_alloc_buffer, gst_pad_push, gst_static_pad_template_get) 
	(gst_ghost_pad_new): Doc fixes.

	* gst/gstobject.c (gst_object_get_parent, gst_object_unparent) 
	(gst_object_check_uniqueness): 

	* gst/gstelement.c (gst_element_add_pad) 
	(gst_element_add_ghost_pad, gst_element_remove_pad) 
	(gst_element_remove_ghost_pad, gst_element_get_pad) 
	(gst_element_get_static_pad, gst_element_get_pad_list) 
	(gst_element_class_get_pad_template_list) 
	(gst_element_class_get_pad_template): Work on the docs.
	(gst_element_get_pad_template_list): Uses the class method.
	(gst_element_get_compatible_pad_template): Docs, and consolidate
	some test conditions. 
	(gst_element_get_pad_from_template): New static function.
	(gst_element_request_compatible_pad): Docs, and work with
	non-request compatible templates. 
	(gst_element_get_compatible_pad_filtered): Docs and remove
	redundant checks.
	(gst_element_get_compatible_pad, gst_element_link_pads_filtered) 
	(gst_element_link_filtered, gst_element_link_many) 
	(gst_element_link, gst_element_link_pads) 
	(gst_element_unlink_many): Docs.

2004-02-05  Andy Wingo  <wingo@pobox.com>

	* gst/gstpad.c (_gst_real_pad_fixate_accumulator):
	s/pointer/boxed/.

	* gst/gstmarshal.list (VOID:BOXED, BOXED:BOXED): New marshallers.

	* gst/gstpad.c (gst_real_pad_class_init): Use a BOXED:BOXED
	marshaller for ::fixate, and VOID:BOXED for ::caps-nego-failed,
	with the type=GST_TYPE_CAPS. This allows language bindings to know
	what kind of data they're dealing with.

	* gst/gstcaps.c (_gst_caps_value_init): GBoxed values initialize
	to NULL when g_value_init is called. GstCaps, which rolls its own
	type implementation, now does the same instead of allocating empty
	caps.
	(_gst_caps_initialize, _gst_caps_collect_value,
	_gst_caps_lcopy_value): Provide collect_value and lcopy_value type
	table methods. This allows G_VALUE_COLLECT to work.

2004-02-05  Andy Wingo  <wingo@pobox.com>

	* configure.ac:
	* testsuite/Makefile.am (SUBDIRS): 
	* testsuite/ghostpads/Makefile.am: 
	* testsuite/ghostpads/ghostpads.c: A new test for ghost pads.

	* gst/gstpad.c (gst_pad_add_ghost_pad, gst_pad_remove_ghost_pad):
	These two routines are the only ones that set
	GST_GPAD_REALPAD(gpad), the ghost pad list, and the ghost pad's
	pad template. They should be made static, depending on ABI needs.
	(gst_real_pad_dispose): Handle the case of ghost pads without a
	parent. Assert after dealing with ghost pads that the ghost pad
	list is empty.
	(gst_ghost_pad_class_init): New property added, ::real-pad. Can be
	set after creation.
	(gst_ghost_pad_dispose): Set ::real-pad to NULL.
	(gst_ghost_pad_set_property, gst_ghost_pad_get_property): New
	functions. set_property will call add_ghost_pad/remove_ghost_pad
	as appropriate.
	(gst_ghost_pad_new): All the work is offloaded to g_object_new.

	* gst/gstelement.c (gst_element_add_pad): Handle ghost pads as well.
	(gst_element_add_ghost_pad): Remove code duplicated from _add_pad.
	(gst_element_remove_pad): Handle ghost pads as well.
	(gst_element_remove_ghost_pad): Deprecated (could be removed,
	depending on API-stability needs).

2004-02-05  Andy Wingo  <wingo@pobox.com>

	* gst/gstbin.[ch]: (gst_bin_get_by_interface): GTypes are scalars,
	of course they're const

2004-02-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/Makefile.am:
	* tools/gst-feedback:
	* tools/gst-feedback-0.7:
          make gst-feedback versioned too for consistency

2004-02-11  David Schleef  <ds@schleef.org>

	* gst/gstpad.c: (gst_pad_link_intersect), (gst_pad_link_fixate),
	(gst_pad_try_set_caps): Fix format strings for GST_PTR_FORMAT.

2004-02-10  Julien MOUTTE <julien@moutte.net>

	* gst/gstevent.c: (_gst_event_free): Sometimes a tag event arrives but
	the structure does not contain a valid tag list. Adding a safety check
	to remove a noisy warning in that case.

2004-02-10  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gst.c: fix name to be in line with others

2004-02-09  Julien MOUTTE <julien@moutte.net>

	* libs/gst/bytestream/bytestream.c: (gst_bytestream_peek): We should
	not shout that loud when len is 0. Just return 0 silently.

2004-02-09  Julien MOUTTE  <julien@moutte.net>

	* gst/gstdata.c: (gst_data_ref): Adding a categorized debug on data_ref
	because data_unref has one and I prefer the debug to be symetric.
	* gst/gstqueue.c: (gst_queue_locked_flush): Fix a huge memleak. Buffers
	were refed when added to the queue and unrefed only once when the queue
	was flushed. Now the flush handler unref the buffers two times : first
	unref for the ref added when pushing in the queue's tail and second
	unref to destroy the flushed buffer.

2004-02-08  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/pwg/building-boiler.xml: fix cvs checkout documentation

2004-02-06  David Schleef  <ds@schleef.org>

	* docs/random/ds/0.9-suggested-changes: Random ramblings
	* gst/elements/gstfilesrc.c: (gst_filesrc_get_mmap): Cast size_t
	to int before printing.
	* gst/parse/grammar.y: Fix gcc-2.95 style variadic macros.
	* gst/parse/parse.l: same.  See bug #129600

2004-02-06  David Schleef  <ds@schleef.org>

	* gst/gstindex.c: (gst_index_add_format), (gst_index_add_id),
	(gst_index_add_entry), (gst_index_add_associationv),
	(gst_index_add_association): Add gst_index_add_associationv()
	and clean up gst_index_add_association(). #127133

2004-02-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* autogen.sh: check out common with right tag if CVS/Tag exists

2004-02-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* testsuite/ghostpads/ghostpads.c: (main):
          fix testsuite from segfaulting

2004-02-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am: add release target
	* configure.ac: bump nano to 1
	* docs/random/release:

2004-02-06  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstcaps.h:
	* gst/gstelement.c: (gst_element_base_class_init),
	(gst_element_class_set_details), (gst_element_clear_pad_caps):
	* gst/gstpad.c: (gst_pad_link_intersect), (gst_pad_link_fixate),
	(gst_pad_try_set_caps), (gst_pad_can_link_filtered),
	(gst_real_pad_dispose):
	* gst/gststructure.c: (gst_structure_free),
	(gst_structure_from_string):
	  put reverted patch back in
	* gst/gstelement.c: (gst_element_remove_pad):
	  free explicit caps if they're set
	* gst/gstpad.c: (_gst_pad_default_fixate_func):
	  copy the structure when fixating

2004-02-05  David Schleef  <ds@schleef.org>

	* gst/gstmarshal.list:
	* gst/gstpad.c: (gst_real_pad_class_init),
	(_gst_real_pad_fixate_accumulator):
	Revert POINTER->BOXED change in signal marshaller.

=== release 0.7.4 ===
                                                                                
2004-02-06  Thomas Vander Stichele  <thomas at apestaart dot org>
                                                                                
        * NEWS: GStreamer 0.7.4 "Wooden Eels" released
        * configure.ac: changed for release

2004-02-05  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>

	* gstreamer.spec.in:
          bump required version of gtk-doc

2004-02-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstcaps.h:
	* gst/gstelement.c: (gst_element_base_class_init),
	(gst_element_class_set_details), (gst_element_clear_pad_caps):
	* gst/gstpad.c: (gst_pad_link_intersect), (gst_pad_link_fixate),
	(gst_pad_try_set_caps), (gst_pad_can_link_filtered),
	(gst_real_pad_dispose):
	* gst/gststructure.c: (gst_structure_free),
	(gst_structure_from_string):
          revert patch that breaks applications, reapply after release
          to get this fixed properly

2004-02-05  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gsttag.c: (_gst_tag_initialize):
	* gst/gsttag.h:
	  remove duplicated field GST_TAG_APPLICATION. It's GST_TAG_ENCODER

2004-02-04  David Schleef  <ds@schleef.org>

	Fix some memleaks:
	* gst/autoplug/gstspider.c: (gst_spider_request_new_pad),
	(gst_spider_plug_from_srcpad):
	* gst/autoplug/gstspideridentity.c: (gst_spider_identity_link):

2004-02-04  David Schleef  <ds@schleef.org>

	* gst/gstelement.c: (gst_element_clear_pad_caps): Make sure we have
	a GstRealPad before accessing its structure members.

2004-02-04  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstclock.c: (gst_clock_init), (gst_clock_set_speed),
	(gst_clock_get_speed):
	* gst/gstclock.h:
	  reset padding, remove unused fields

2004-02-04  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/autoplug/gstspideridentity.c:
	(gst_spider_identity_sink_loop_type_finding):
	  use get_allowed_caps, not get_caps (fixes #132519)
	* gst/elements/gsttypefind.c: (stop_typefinding):
	  use correct order when sending buffers and seeking

2004-02-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* gst/gstelement.h:
	* gst/gstpad.h:
	* gst/gstqueue.h:
          upgrade libtool CURRENT, reset padding

2004-02-04  Thomas Vander Stichele  <thomas at apestaart dot org>

        * configure.ac:
          bump to prerelease
          put back AM_PROG_LIBTOOL to make libtoolize stop complaining

2004-02-04  David Schleef  <ds@schleef.org>

	* docs/random/ds/0.9-suggested-changes: random notes
	* gst/elements/gstfakesrc.c: (gst_fakesrc_get_formats),
	(gst_fakesrc_get_query_types), (gst_fakesrc_get_event_mask):
	Replace GST_PAD_EVENT_MASK_FUNCTION() (et al.) with its
	expansion.
	* gst/elements/gstfilesink.c: (gst_filesink_get_formats),
	(gst_filesink_get_query_types): same
	* gst/elements/gstfilesrc.c: (gst_filesrc_get_event_mask),
	(gst_filesrc_get_query_types), (gst_filesrc_get_formats): same
	* gst/gstcaps.h: deprecate GST_DEBUG_CAPS(), and fix the macro
	to use new GST_PTR_FORMAT.
	* gst/gstelement.h: deprecate function factory macros
	GST_ELEMENT_QUERY_TYPE_FUNCTION(), GST_ELEMENT_EVENT_MASK_FUNCTION().
	These are our last variadic macros that can't be replaced with
	inlines.  Celebrate!  Also fix a typo in an #ifdef that was
	attempting to deprecate gst_element_clock_wait().
	* gst/gstevent.h: same
	* gst/gstpad.c: (gst_pad_link_intersect), (gst_pad_link_fixate),
	(gst_pad_try_set_caps): replace GST_DEBUG_CAPS() with GST_DEBUG()
	* gst/gstpad.h: deprecate function factory macros similar to above.

2004-02-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* tools/Makefile.am:
	* tools/gst-run.c: (popt_callback), (hash_print_key),
	(find_highest_version), (unmangle_libtool), (get_dir_of_binary),
	(get_candidates), (main):
          add new source file to generate non-versioned wrapper binaries
          for our tools.

2004-02-04  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstevent.c: (_gst_event_free):
	  actually break; inside the switch statement
	* gst/parse/grammar.y:
	  fix memleak where GValues weren't unset

2004-02-03  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gststructure.c: (gst_structure_from_string):
	  fix huge memleak
	* gst/elements/gsttypefind.c: (gst_type_find_element_have_type),
	(new_entry), (gst_type_find_element_chain):
	* gst/gstelement.c: (gst_element_base_class_init),
	(gst_element_class_set_details):
	* gst/gstpad.c: (gst_pad_can_link_filtered):
	  fix smaller memleaks
	* gst/gstpad.c: (gst_real_pad_dispose):
	  check that explicit caps are gone
	* gst/gststructure.c: (gst_structure_free):
	  actually free the structure
	* gst/gstelement.c: (gst_element_clear_pad_caps):
	  unset explicit caps

2004-02-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* tools/Makefile.am:
	  use AM_CFLAGS since all the CFLAGS are the same
	  use AM_LDFAGS

2004-02-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manual/gnome.xml:
          expand example a little
	* gst/gst.c: (gst_init_with_popt_table),
	(gst_init_check_with_popt_table), (init_pre), (init_popt_callback):
          make sure popt option displays are done with right textdomain
          use GstPoptOption type
	* gst/gst.h:
          create GstPoptOption type

2004-02-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsterror.c: (_gst_stream_errors_init):
	* gst/gsterror.h:
          adding error type for no codec
	* po/POTFILES.in:
          add gst-inspect
	* po/nl.po:
          update dutch translation
	* tools/gst-inspect.c: (print_element_list), (main):
          do proper internationalization
	* tools/gst-launch.c: (idle_func):
          remove commented out function call

2004-02-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/README:
          add some error fixing notes
	* docs/gst/gstreamer-sections.txt:
          remove double entries
	* docs/gst/tmpl/gstbin.sgml:
	* docs/gst/tmpl/gstclock.sgml:
          remove override
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstindex.sgml:
	* docs/gst/tmpl/gstobject.sgml:
	* docs/gst/tmpl/gstpadtemplate.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gsttag.sgml:
	* docs/gst/tmpl/gstthread.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* gst/gsttag.h:
          sync header prototypes with c decls
	* gst/gsttaginterface.c:
          fix doc headers

2004-02-03  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/parse/Makefile.am:
	* gst/gstobject.h:
	  get rid of gstmarshal.h dependency. It's not needed.
	* gst/gst.h:
	* gst/elements/gstfakesink.c:
	* gst/elements/gstfakesrc.c:
	* gst/elements/gstidentity.c:
	* gst/gstbin.c:
	* gst/gstelement.c:
	* gst/gstindex.c:
	* gst/gstobject.c:
	* gst/gstpad.c:
	* gst/gstthread.c:
	* gst/gstxml.c:
	* libs/gst/control/dparam.c:
	* libs/gst/control/dparammanager.c:
	  include gstmarshal.h.
	Fixes #132045

2004-02-03  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/elements/gstfilesrc.c: (gst_filesrc_init),
	(gst_filesrc_dispose), (gst_filesrc_free_parent_mmap),
	(gst_filesrc_map_region), (gst_filesrc_get_mmap):
	* gst/elements/gstfilesrc.h:
	  don't ref the filesrc when creating mmaped buffers. Don't keep a
	  list of not-yet-destroyed buffers.
	* gst/gstbuffer.h:
	  Deprecated BST_BUFFER_FREE_FUNC and GST_BUFFER_COPY_FUNC

2004-02-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gst.c: (init_pre):
          remove textdomain

2004-02-02  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-events.xml:
	* docs/pwg/advanced-scheduling.xml:
	* docs/pwg/intro-basics.xml:
	* docs/pwg/other-manager.xml:
	* docs/pwg/other-nton.xml:
	* docs/pwg/other-ntoone.xml:
	* docs/pwg/other-oneton.xml:
	* docs/pwg/pwg.xml:
	  All sort of documentation... Forgot what. Point is that I want this
	  in before I leave. The 'other-*' will be the last section and will
	  explain issues specific to these type of elements.

2004-02-02  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/elements/gstfilesrc.c: (gst_filesrc_map_region),
	(gst_filesrc_get_read):
	  set all the values on buffers that we can

2004-02-02  David Schleef  <ds@schleef.org>

	Change usage of isblah() to g_ascii_isblah() to be more locale
	independent.  (#133076)
	* gst/gsturi.c: (gst_uri_protocol_check_internal):
	* gst/gstutils.c:
	* gst/parse/parse.l:

2004-02-02  Jon Trowbridge  <trow@gnu.org>

	reviewed by: David Schleef  <ds@schleef.org>

	Fix memory leaks:
	* gst/gstcaps.c: (gst_caps_to_string):
	* gst/registries/gstxmlregistry.c:
	(gst_xml_registry_add_path_list_func),
	(gst_xml_registry_parse_padtemplate):

2004-02-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_default_error):
          suffix error messages with period

2004-01-31  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstfilesrc.c: (gst_filesrc_open_file):
	* gst/elements/gstmultidisksrc.c: (gst_multidisksrc_open_file):
	* gst/gsterror.c: (gst_error_get_message):
          Suffix with dots
	* po/fr.po:
	* po/nl.po:
          Update translation files

2004-01-31  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/autoplug/gstspideridentity.c:
	(gst_spider_identity_sink_loop_type_finding):
	* gst/elements/gstfakesink.c: (gst_fakesink_change_state):
	* gst/elements/gstfilesink.c: (gst_filesink_open_file),
	(gst_filesink_close_file), (gst_filesink_handle_event),
	(gst_filesink_chain):
	* gst/elements/gstfilesrc.c: (gst_filesrc_map_region),
	(gst_filesrc_get_read), (gst_filesrc_open_file):
	* gst/elements/gstidentity.c: (gst_identity_chain):
	* gst/elements/gstmultidisksrc.c: (gst_multidisksrc_open_file):
	* gst/elements/gstpipefilter.c: (gst_pipefilter_get),
	(gst_pipefilter_chain), (gst_pipefilter_open_file):
	* gst/elements/gsttypefind.c: (gst_type_find_element_chain):
	* gst/gsterror.c: (_gst_core_errors_init),
	(_gst_library_errors_init), (_gst_resource_errors_init),
	(_gst_stream_errors_init), (gst_error_get_message):
	* gst/gstpad.c: (gst_pad_set_explicit_caps),
	(gst_pad_recover_caps_error), (gst_pad_pull):
	* gst/gstqueue.c: (gst_queue_chain), (gst_queue_get):
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_chainhandler_proxy),
	(gst_basic_scheduler_gethandler_proxy),
	(gst_basic_scheduler_cothreaded_chain):
          Suffix error messages with period.
          Use (NULL) instead of NULL

2004-01-31  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* gst/gstelement.c: (gst_element_error_full):
          add element path to error

2004-01-31  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* docs/random/mimetypes:
	  update raw int/float info
	* gst/gsttag.c: (_gst_tag_initialize):
	* gst/gsttag.h:
	  add GST_TAG_ENCODER

2004-01-30  David Schleef  <ds@schleef.org>

	* gst/cothreads.c: Add another fallback if MAP_ANONYMOUS is
	  missing (#132991)

2004-01-30  Laurent Vivier <Laurent.Vivier@bull.net>

	reviewed by Benjamin Otte 
	  parts of the patch submitted in bug #113913

	* configure.ac:
	  use AC_C_INLINE. Use = instead of == with test
	* examples/plugins/example.c:
	* gst/autoplug/gstspideridentity.c:
	* gst/elements/gstfdsrc.c:
	* gst/elements/gstfilesrc.c:
	* gst/elements/gstidentity.c:
	* gst/elements/gstmultidisksrc.c:
	* gst/elements/gststatistics.c:
	* gst/gstelement.c:
	* gst/gstobject.c:
	* gst/gstpad.c:
	* gst/gstpipeline.c:
	* gst/gstthread.c:
	  don't end enums with a comma
	* gst/gstindex.c: (gst_index_compare_func):
	  do explicit casting to gint
	* gst/gsttrace.c: (gst_trace_text_flush):
	  #define strsize as a macro

2004-01-30  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/README:
	* docs/gst/gstreamer-docs.sgml:
	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gsterror.sgml:
	* docs/gst/tmpl/gstinterface.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gststructure.sgml:
	* docs/gst/tmpl/gsttag.sgml:
	* docs/gst/tmpl/gsttaginterface.sgml:
	* docs/gst/tmpl/gstvalue.sgml:
	make sure all API ends up in the built docs
	* gst/gstinterface.c:
	* gst/gststructure.c: (gst_structure_id_set_value),
	(gst_structure_set_value), (gst_structure_id_get_value):
	* gst/gststructure.h:
	* gst/gstvalue.h:
        sync .h with .c declarations

2004-01-30  Julien Moutte  <julien@moutte.net>

	* libs/gst/bytestream/bytestream.c: Reverting my event handling patch.
	Ronald will fix riffread.

2004-01-30  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-interfaces.xml:
	  Added tuner interface docs.

2004-01-30  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* docs/random/mimetypes:
	  correct Theora information
	* gst/gstelement.h:
	  make GST_ELEMENT_ERROR do a GST_ERROR_OBJECT

2004-01-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_error_full):
	* gst/gstelement.h:
          GST_ELEMENT_ERROR in enum -> _IN_ERROR

2004-01-29  Julien MOUTTE  <julien@moutte.net>

	* gst/elements/gstfilesrc.c: (gst_filesrc_get),
	(gst_filesrc_uri_handler_init): Fixing seeking by making FLUSH happen
	again and even before DISCONT.
	* gst/gstpad.c: (gst_pad_event_default): Remove a unused switch case.
	* libs/gst/bytestream/bytestream.c: (gst_bytestream_get_next_buf): Fix
	bytestream so that it's not stopping to fill the bytestream if events
	different than EOS or DISCONT are received. Instead it process them so
	that they go downstream.

2004-01-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* gst/autoplug/gstspideridentity.c:
	(gst_spider_identity_sink_loop_type_finding):
	* gst/elements/gstfakesink.c: (gst_fakesink_change_state):
	* gst/elements/gstfilesink.c: (gst_filesink_open_file),
	(gst_filesink_close_file), (gst_filesink_handle_event),
	(gst_filesink_chain):
	* gst/elements/gstfilesrc.c: (gst_filesrc_map_region),
	(gst_filesrc_get_read), (gst_filesrc_open_file):
	* gst/elements/gstidentity.c: (gst_identity_chain):
	* gst/elements/gstmultidisksrc.c: (gst_multidisksrc_open_file):
	* gst/elements/gstpipefilter.c: (gst_pipefilter_get),
	(gst_pipefilter_chain), (gst_pipefilter_open_file):
	* gst/elements/gsttypefind.c: (gst_type_find_element_chain):
	* gst/gstelement.h:
	* gst/gstpad.c: (gst_pad_set_explicit_caps),
	(gst_pad_recover_caps_error), (gst_pad_pull):
	* gst/gstqueue.c: (gst_queue_chain), (gst_queue_get):
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_chainhandler_proxy),
	(gst_basic_scheduler_gethandler_proxy),
	(gst_basic_scheduler_cothreaded_chain):
          gst_element_error -> GST_ELEMENT_ERROR

2004-01-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/Makefile.am:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* docs/manuals.mak:
	* docs/pwg/advanced-request.xml:
	* docs/pwg/advanced-scheduling.xml:
	* docs/pwg/advanced-tagging.xml:
          fix non-validating docbook using CDATA
          make sure make check-local gets run first to check if it validates

2004-01-29  Julien MOUTTE <julien@moutte.net>

	* docs/pwg/advanced-events.xml: Adding documentation on advanced event
	handling (up and downstream).
	* docs/pwg/advanced-interfaces.xml: Make it coherent with the
	my_filter thing.

2004-01-29  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-tagging.xml:
	  Add docs about tag writing.

2004-01-29  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced-tagging.xml:
	  Add a part about tag reading and application signalling... Tag
	  writing still needs to be documented.
	* gst/elements/gstfilesrc.c: (gst_filesrc_set_location):
	  We can set file locations in READY, too.

2004-01-29  Julien MOUTTE <julien@moutte.net>

	* docs/random/ds/element-checklist: Adding some notes about src
	events.

2004-01-29  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/random/mimetypes:
	  Update docs to point to correct elements for various mimetypes, and
	  some more errors pointed out by Stéphane LOEUILLET (aka LeRoutier)
	  <stephane.loeuillet@tiscali.fr>.

2004-01-28  David Schleef  <ds@schleef.org>

	* docs/pwg/intro-basics.xml: rewrite bufferpool stuff.

2004-01-29  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* docs/random/mimetypes:
	  update docs for audio/x-raw-float. Add "buffer-frames=0 means
	  undefined"
	* gst/elements/gstfilesrc.c: (gst_filesrc_set_location):
	  make it only work in NULL.
	* gst/gstcaps.c:
	  don't posion NULL caps
	* gst/gstelement.c: (gst_element_set_time):
	  add debugging statement
	* gst/gstelement.c: (gst_element_emit_found_tag),
	(gst_element_found_tag_func), (gst_element_found_tags):
	* gst/gstelement.h:
	  These functions take const taglists
	* gst/gstpad.c: (gst_pad_proxy_getcaps):
	  fix memleak
	* gst/gstpad.c: (gst_pad_event_default):
	  make more effort on handling discont and clocks, g_warn if everything
	  fails
	* gst/gststructure.c: (gst_structure_remove_fields),
	(gst_structure_remove_fields_valist):
	* gst/gststructure.h:
	  add gst_structure_remove_fields(_valist)
	* gst/gsttag.c:
	  fix doc glitch

2004-01-28  David Schleef  <ds@schleef.org>

	* docs/random/ds/element-checklist: Notes about gst_caps_to_string()
	* gst/registries/gstxmlregistry.c: (gst_xml_registry_save_caps):
	Fix memory leakage of gst_caps_to_string().

	Use GST_PTR_FORMAT instead of gst_caps_to_string():
	* gst/autoplug/gstsearchfuncs.c: (gst_autoplug_sp):
	* gst/autoplug/gstspideridentity.c: (spider_find_suggest),
	(gst_spider_identity_sink_loop_type_finding):
	* gst/elements/gsttypefind.c: (gst_type_find_element_have_type),
	(find_suggest):
	* gst/gstpad.c: (gst_pad_try_relink_filtered),
	(gst_pad_set_explicit_caps):
	* gst/parse/grammar.y:

2004-01-28  David Schleef  <ds@schleef.org>

	* configure.ac: Add detection for HAVE_PRINTF_EXTENSION and
	GST_PRINTF_EXTENSION_FORMAT_DEFINE.
	* docs/random/ds/0.9-suggested-changes: Notes from Company.
	* gst/gstcaps.c: (gst_caps_to_string): Add comment.
	* gst/gstconfig.h.in: Add define for GST_PTR_FORMAT
	* gst/gstinfo.c: (_gst_debug_init), (gst_debug_print_object),
	(gst_debug_log_default), (_gst_info_printf_extension),
	(_gst_info_printf_extension_arginfo):  Add printf extension.
	* gst/gstinfo.h: remove G_GNUC_PRINTF, because it doesn't work with %P
	* gst/gststructure.c: (gst_structure_to_string),
	(_gst_structure_parse_value): Use gst_value_deserialize() and
	remove old code.
	* gst/gstvalue.c: (gst_value_deserialize_fourcc),
	(gst_value_deserialize_boolean), (gst_strtoi),
	(gst_value_deserialize_int), (gst_value_deserialize_double),
	(gst_value_deserialize_string), (gst_value_deserialize): Implement
	a bunch of deserialize functions and gst_value_deserialize.
	* gst/gstvalue.h: er, _de_serialize, not unserialize
	* testsuite/caps/string-conversions.c: (main): We don't currently
	handle (float) in caps, so convert these to (double).
	* testsuite/debug/Makefile.am: Add new test for the printf extension
	* testsuite/debug/printf_extension.c: (main): same

2004-01-28  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* docs/random/company/time:
	  Add some docs about clocking and time

2004-01-28  Julien MOUTTE <julien@moutte.net>

	* docs/pwg/advanced-interfaces.xml: Adding XOverlay documentation.

2004-01-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/pwg/advanced-clock.xml:
	* docs/pwg/advanced-dparams.xml:
	* docs/pwg/advanced-events.xml:
	* docs/pwg/advanced-interfaces.xml:
	* docs/pwg/advanced-midi.xml:
	* docs/pwg/advanced-request.xml:
	* docs/pwg/advanced-scheduling.xml:
	* docs/pwg/advanced-tagging.xml:
	* docs/pwg/advanced-types.xml:
	* docs/pwg/appendix-checklist.xml:
	* docs/pwg/building-boiler.xml:
	* docs/pwg/building-chainfn.xml:
	* docs/pwg/building-filterfactory.xml:
	* docs/pwg/building-pads.xml:
	* docs/pwg/building-props.xml:
	* docs/pwg/building-signals.xml:
	* docs/pwg/building-state.xml:
	* docs/pwg/building-testapp.xml:
	* docs/pwg/intro-basics.xml:
	* docs/pwg/intro-preface.xml:
	* docs/pwg/other-autoplugger.xml:
	* docs/pwg/other-sink.xml:
	* docs/pwg/other-source.xml:
	* docs/pwg/titlepage.xml:
          fix up id's

2004-01-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/95NonPath:
	* docs/HACKING:
	* docs/README:
	* docs/building-the-docs-on-debian:
          collect relevant bits of doc info

2004-01-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_tagging.xml:
	  Half-assed commit so Thomas can re-arrange document IDs here to be
	  consistent, too.

2004-01-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manual/autoplugging.xml:
	* docs/manual/bins-api.xml:
	* docs/manual/bins.xml:
	* docs/manual/buffers-api.xml:
	* docs/manual/buffers.xml:
	* docs/manual/clocks.xml:
	* docs/manual/components.xml:
	* docs/manual/cothreads.xml:
	* docs/manual/debugging.xml:
	* docs/manual/dparams-app.xml:
	* docs/manual/dynamic.xml:
	* docs/manual/elements-api.xml:
	* docs/manual/elements.xml:
	* docs/manual/factories.xml:
	* docs/manual/gnome.xml:
	* docs/manual/goals.xml:
	* docs/manual/helloworld.xml:
	* docs/manual/helloworld2.xml:
	* docs/manual/init-api.xml:
	* docs/manual/intro.xml:
	* docs/manual/links-api.xml:
	* docs/manual/links.xml:
	* docs/manual/manual.xml:
	* docs/manual/motivation.xml:
	* docs/manual/pads-api.xml:
	* docs/manual/pads.xml:
	* docs/manual/plugins-api.xml:
	* docs/manual/plugins.xml:
	* docs/manual/programs.xml:
	* docs/manual/queues.xml:
	* docs/manual/quotes.xml:
	* docs/manual/schedulers.xml:
	* docs/manual/states-api.xml:
	* docs/manual/states.xml:
	* docs/manual/threads.xml:
	* docs/manual/typedetection.xml:
	* docs/manual/xml.xml:
          use chapter, part, section or misc as id starts for all bits

2004-01-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
          Fix up TITLE of the sections

2004-01-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_interfaces.xml:
	  Add documentation on propertyprobing.
	* docs/pwg/advanced_events.xml:
	* docs/pwg/advanced_tagging.xml:
	* docs/pwg/building_boiler.xml:
	* docs/pwg/building_filterfactory.xml:
	* docs/pwg/pwg.xml:
	  Move filterfactory and tagging into their own chapter, add a chapter
	  on events. all these are empty placeholders that will be filled in
	  some day.

2004-01-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_interfaces.xml:
	  Docs for mixer interface. Also a check for website uploading.

2004-01-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/HACKING:
	* docs/Makefile.am:
	* docs/faq/Makefile.am:
	* docs/gst/Makefile.am:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstplugin.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/libs/Makefile.am:
	* docs/manual/Makefile.am:
	* docs/manuals.mak:
	* docs/pwg/Makefile.am:
	* docs/upload.mak:
          Separate out upload target and make it similar for
          both docbook and gtk-doc docs

2004-01-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/manuals.mak:
          Fix upload target to work with freedesktop

2004-01-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_types.xml:
	  Add notes on creating your own types.
	* docs/pwg/building_boiler.xml:
	* docs/pwg/building_pads.xml:
	* docs/pwg/building_state.xml:
	  Add some stuff about how to retrieve values from structures, how
	  that relates to types and change layout slightly again to be almost
	  perfect.

2004-01-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_dparams.xml:
	* docs/pwg/advanced_scheduling.xml:
	  Change index layout slightly.

2004-01-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_clock.xml:
	* docs/pwg/advanced_interfaces.xml:
	* docs/pwg/advanced_midi.xml:
	  General placeholders for now.
	* docs/pwg/advanced_request.xml:
	  Explanation about sometimes and request pads.
	* docs/pwg/advanced_scheduling.xml:
	  Concept of bytestream, loopfunctions and schedulers.
	* docs/pwg/building_boiler.xml:
	  Add something about plugin-init.

2004-01-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/pwg/building_pads.xml:
          Fix broken docbook

2004-01-27  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_interfaces.xml:
	* docs/pwg/pwg.xml:
	  Add as a placeholder for future filling-in.
	* docs/pwg/basics_autoplugging.xml:
	* docs/pwg/basics_buffers.xml:
	* docs/pwg/basics_elements.xml:
	* docs/pwg/basics_events.xml:
	* docs/pwg/basics_plugins.xml:
	* docs/pwg/basics_types.xml:
	  Remove, because unused (this is all in intro_basics.xml).
	* docs/pwg/building_signals.xml:
	  Short intro to signals + reference to GObject docs - we really
	  shouldn't go into these sort of things to deply because we don't
	  use them that extensively anyway.
	* docs/pwg/building_state.xml:
	  Explanation of states. Benjamin, please check.
	* docs/pwg/building_testapp.xml:
	  Put everything in one page - putting only a few lines of content
	  per page doesn't really make sense.

	  Time to get into the advanced topics. ;).

2004-01-27  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_types.xml:
	  Finish documenting the current state of mimetypes.
	* docs/pwg/building_boiler.xml:
	* docs/pwg/building_chainfn.xml:
	* docs/pwg/building_pads.xml:
	* docs/pwg/building_props.xml:
	* docs/pwg/building_testapp.xml:
	  Start documenting the "how to build a simple audio filter" part
	  of the PWG. Most stuff is ready by now. Stuff remaining: signals,
	  states and (maybe?) a short introduction to capsnego in the chapter
	  on pads (building_pads.xml). Capsnego should probably be explained
	  fully in advanced_capsnego.xml or so.

2004-01-26  David Schleef  <ds@schleef.org>

	* gst/gstpad.c: (gst_pad_try_set_caps_nonfixed):
	* gst/gstpad.h: Add new function to allow element to (somewhat)
	specify non-fixed caps on a pad.
	* gst/gstqueue.c: (gst_queue_chain): Remove noisy g_object_notify()
	that I added a few weeks ago.

2004-01-26  David Schleef  <ds@schleef.org>

	* gst/gstpad.c: (gst_pad_try_set_caps): Revert last change
	  making try_set_caps() work with non-fixed caps.

2004-01-26  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* docs/pwg/advanced_types.xml:
	* docs/pwg/intro_basics.xml:
	* docs/pwg/intro_preface.xml:
	* docs/pwg/pwg.xml:
	* docs/pwg/titlepage.xml:
	  First try to resurrect the PWG. I'm halfway integrating the mimetypes
	  in here (docs/random/mimetypes), and will from there on work on both
	  updating outdated parts and adding missing parts.
	  That doesn't mean I'll fix it completely, but I'll try at least. ;).

2004-01-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsterror.h: reinstate GST_LIBRARY_ERROR_ENCODE until
          policy is set

2004-01-26  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstelement.h:
	  remove gst_element_factory_get_version. It doesn't exist anymore.
	* gst/gstplugin.c:
	* gst/gstplugin.h:
	  remove gst_plugin_set_name and change gst_plugin_get_longname to
	  gst_plugin_get_description to match code.
	* gst/gsterror.h:
	  remove GST_LIBRARY_ERROR_ENCODE. It's GST_STREAM_ERROR_ENCODE.
	* gst/gstpad.c: (gst_pad_try_set_caps):
	  make it work with nonfixed caps.
	  Note that even in the nonfixed case the link function of the pad
	  that tries to set caps isn't called.

2004-01-25  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/elements/gstbufferstore.c: (gst_buffer_store_get_buffer):
	  fix bug where buffer was not assembled correctly
	* gst/elements/gsttee.c: (gst_tee_class_init), (gst_tee_init):
	  silence by default
	* gst/elements/gsttypefind.c: (gst_type_find_element_chain):
	  only seek if there's no more buffers that could work without seeking

2004-01-23  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gsttag.c: (_gst_tag_initialize):
	* gst/gsttag.h:
	  Add application tag (for encoding/muxing app).

2004-01-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* autogen.sh:
          make autopoint force, and libtoolize not copy
	* common/m4/as-docbook.m4:
          added docbook xml catalog setup check
	* common/m4/gst-doc.m4:
          use docbook check

2004-01-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsttag.c: (_gst_tag_initialize), (gst_tag_register):
	* gst/gsttag.h:
          add GstTagFlag

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gst.sgml:
	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstclock.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gstxml.sgml:
          sync latest API changes to docs

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstpluginfeature.c:
          fix doc snippet
	* tools/gst-inspect.c: (print_element_list):
          fix output of typefind
          add GPL header
	* tools/gst-launch.c:
          add GPL header

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/Makefile.am:
	* gst/elements/gstelements.c:
	* gst/elements/gsttypefindelement.c:
	* gst/elements/gsttypefindelement.h:
	* po/POTFILES.in:
	* po/fr.po:
	* po/nl.po:
          renamed gsttypefindelement to gsttypefind, conserving CVS history

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsttag.c: (_gst_tag_initialize), (gst_tag_list_add_valist):
	* gst/gsttag.h:
          add some tags used in ogg as well
          fix _ in replaygain tags

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsterror.h:
          fix wrong GST_LIBRARY_ERROR_ENCODE addition

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_error_full):
	* gst/gstelement.h:
          change _extended to _full

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	reviewed by: <delete if not using a buddy>

	* docs/gst/tmpl/gst.sgml:
	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstclock.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	* gst/gstelement.c: (gst_element_error_full):
	* gst/gstelement.h:

2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.h: fix _gst_element_error_printf prototype

2004-01-20  David Schleef  <ds@schleef.org>

	* gst/gststructure.c: (gst_structure_to_string):
	Convert function to use gst_value_serialize().
	* gst/gstvalue.c: (gst_value_serialize_list),
	(gst_value_serialize_fourcc), (gst_value_serialize_int_range),
	(gst_value_serialize_double_range), (gst_value_serialize_boolean),
	(gst_value_serialize_int), (gst_value_serialize_double),
	(gst_string_wrap), (gst_value_serialize_string),
	(gst_value_serialize), (gst_value_deserialize):
	* gst/gstvalue.h:
	Add implementations for serialize.

2004-01-20  Julien MOUTTE  <julien@moutte.net>

	* gst/gsterror.h: xvidenc.c needs GST_LIBRARY_ERROR_ENCODE. Dunno if
	we want to keep that one in the future or change xvidenc.c to use 
	another error.

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (_gst_element_error_printf):
	* gst/gstelement.h:
          privatise function

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/random/error:
          doc explaining error system
	* gst/elements/gstfilesrc.c: (gst_filesrc_open_file):
          cleanup

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gst-i18n-app.h:
	* gst/gst-i18n-lib.h:
          remove inclusion of config.h
	* po/POTFILES.in:
	* po/nl.po:
          add gst/gstelement.c

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/nl.po: updated Dutch translation

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gsterror.c: (_gst_core_errors_init),
	(_gst_library_errors_init), (_gst_resource_errors_init),
	(_gst_stream_errors_init):
        remove ending punctuation dots

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/elements/gstfilesink.c: (gst_filesink_open_file):
	* gst/elements/gstfilesrc.c: (gst_filesrc_get_read):
	* gst/elements/gstmultidisksrc.c: (gst_multidisksrc_open_file):
	* gst/elements/gstpipefilter.c: (gst_pipefilter_get),
	(gst_pipefilter_chain), (gst_pipefilter_open_file):
        use GST_ERROR_SYSTEM

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.c: (gst_element_error_printf),
	(gst_element_error_extended):
	* gst/gstelement.h:
          add a helper printf function so we can have NULL values passed.

2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstelement.h:
          add G_STMT macros to gst_element_error, which isn't strictly
          necessary but people tell me to anyway.

2004-01-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/Makefile.am:
	* gst/autoplug/gstspideridentity.c:
	(gst_spider_identity_sink_loop_type_finding):
	* gst/elements/gstfakesink.c: (gst_fakesink_change_state):
	* gst/elements/gstfilesink.c: (gst_filesink_open_file),
	(gst_filesink_close_file), (gst_filesink_handle_event),
	(gst_filesink_chain):
	* gst/elements/gstfilesrc.c: (gst_filesrc_set_property),
	(gst_filesrc_map_region), (gst_filesrc_get_read),
	(gst_filesrc_open_file):
	* gst/elements/gstidentity.c: (gst_identity_chain):
	* gst/elements/gstmultidisksrc.c: (gst_multidisksrc_open_file):
	* gst/elements/gstpipefilter.c: (gst_pipefilter_get),
	(gst_pipefilter_chain), (gst_pipefilter_open_file):
	* gst/elements/gsttypefindelement.c: (gst_type_find_element_chain):
	* gst/gst.h:
	* gst/gst_private.h:
	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_default_error), (gst_element_error_func),
	(gst_element_error_extended):
	* gst/gstelement.h:
	* gst/gsterror.c: (_gst_core_errors_init),
	(_gst_library_errors_init), (_gst_resource_errors_init),
	(_gst_stream_errors_init), (gst_error_get_message):
	* gst/gsterror.h:
	* gst/gstinfo.c: (_gst_debug_init):
	* gst/gstmarshal.list:
	* gst/gstpad.c: (gst_pad_set_explicit_caps),
	(gst_pad_recover_caps_error), (gst_pad_pull):
	* gst/gstqueue.c: (gst_queue_chain), (gst_queue_get):
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_chainhandler_proxy),
	(gst_basic_scheduler_gethandler_proxy),
	(gst_basic_scheduler_cothreaded_chain):
	* po/POTFILES.in:
	* po/fr.po:
	* po/nl.po:
          change error signal
          add error categories

2004-01-18  Jeremy Simon  <jesimon@libertysurf.fr>

	* gst/gsttag.c: (_gst_tag_initialize):
	* gst/gsttag.h:
	Add replaygain tag

2004-01-18  Colin Walters  <walters@verbum.org>

	* examples/retag/retag.c: Call gst_init before processing
	program args.  Add g_assert to _link_many call.

2004-01-16  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstpad.c: (gst_pad_alloc_buffer):
	  Return a newly allocated buffer when the pad has no peer.

2004-01-16  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstclock.c: (gst_clock_get_time):
	  make it compile with gcc 2.95 again.
	  Patch by Scott Wheeler

2004-01-15  David Schleef  <ds@schleef.org>

	* gst/gstcaps.h:
	Added gst_caps_is_simple() macro.
	* testsuite/caps/caps.c: (test1):
	* testsuite/caps/intersect2.c: (main):
	* testsuite/caps/intersection.c: (main):
	Fixes to make 'make check' work again after removing
	gst_caps_is_chained().

2004-01-15  Leif Johnson <leif@ambient.2y.net>

	* docs/random/uraeus/gstreamer_and_midi.txt: Rather large edits
	and additions to the MIDI document.

2004-01-15  David Schleef  <ds@schleef.org>

	* gst/gstelement.c: (gst_element_get_compatible_pad_filtered),
	(gst_element_link_pads_filtered): Use GST_PAD_ macros instead
	of GST_RPAD_, since we don't know if it's a real or ghost pad.

2004-01-15  David Schleef  <ds@schleef.org>

	* gst/gstqueue.c:
	* gst/gstqueue.h:
	Fix the spelling of "treshold" and make min_threshold actually
	affect the queue.

2004-01-15  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c:
	Add lots of documentation.
	* gst/gstcaps.h:
	Deprecate a few functions.
	* gst/gstpad.c:
	Removed use of deprecated functions.

2004-01-15  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstpad.c: (gst_pad_is_linked):
	* gst/gstpad.h:
	  implement gst_pad_is_linked
	* gst/gstelement.h:
	  reserve space for initiate_state_change

2004-01-15  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/autoplug/gstspideridentity.c:
	(gst_spider_identity_sink_loop_type_finding):
	  break infinite loop by just returning instead of looping
	* gst/gstclock.c: (gst_clock_class_init), (gst_clock_set_property):
	  set event time difference correctly. Set it to 1 second instead
	  of 100ms to be more tolerant
	* gst/gstelement.c: (gst_element_set_time):
	  add debugging output

2004-01-14  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstqueue.c: (gst_queue_getcaps), (gst_queue_link):
	  query if buffers are inside the pool, ignore events

2004-01-13  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstclock.c: (gst_clock_class_init), (gst_clock_init),
	(gst_clock_set_speed), (gst_clock_set_active),
	(gst_clock_is_active), (gst_clock_reset),
	(gst_clock_handle_discont):
	* gst/gstclock.h:
	  deprecate old interface and disable functions that aren't in use
	  anymore.
	* gst/gstelement.h:
	* gst/gstelement.c: (gst_element_get_time), (gst_element_wait),
	(gst_element_set_time), (gst_element_adjust_time):
	  add concept of "element time" and functions to get/set this time.
	* gst/gstelement.c: (gst_element_change_state):
	  update element time correctly.
	* gst/gstelement.c: (gst_element_get_compatible_pad_filtered):
	  This is a debug message, not a g_critical.
	* gst/gstpad.c: (gst_pad_event_default):
	  handle discontinuous events right with element time.
	* gst/gstscheduler.c: (gst_scheduler_state_transition):
	  update to clocking fixes.
	  set clocks on elements in READY=>PAUSED. The old behaviour caused
	  a wrong element time on the first element that started playing.
	* gst/schedulers/gstbasicscheduler.c:
	(gst_basic_scheduler_class_init):
	* gst/schedulers/gstoptimalscheduler.c:
	(gst_opt_scheduler_class_init):
	  remove code that just implements the default behaviour.
	* gst/elements/gstfakesink.c: (gst_fakesink_chain):
	  update to use new clocking functions
	* testsuite/clock/clock1.c: (gst_clock_debug), (main):
	* testsuite/clock/clock2.c: (gst_clock_debug), (main):
	  update to test new element time.
	* gst/autoplug/gstspideridentity.c: (gst_spider_identity_getcaps):
	  use _get_allowed_caps instead of _get_caps. This catches filtered
	  caps correctly.
	* testsuite/debug/commandline.c:
	  update for new GST_DEBUG syntax.
	* testsuite/threads/Makefile.am:
	  disable a test that only works sometimes.

2004-01-13  Julien MOUTTE <julien@moutte.net>

	* po/LINGUAS: Adding fr.
	* po/fr.po: Adding french translation.

2004-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/parse/grammar.y:
	* po/POTFILES.in:
	* po/nl.po:
	* tools/gst-launch.c: (xmllaunch_parse_cmdline), (main):
          translate parsing error messages

2004-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/POTFILES.in: adding gst-launch
	* po/nl.po: updated translation, all 99 strings translated
	* tools/gst-launch.c: (idle_func), (xmllaunch_parse_cmdline),
	(found_tag), (sigint_handler_sighandler), (play_handler), (main):
          fix strings for translation

2004-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>

        * gst/gst.c:
          - capitalize beginnings of popt options
          - fix strings for translation
          - change gst-debug format from =N1=V1:N2=V2 to =N1:V1,N2:V2

2004-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* po/README: add some notes on how to update translations

2004-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* ABOUT-NLS: removed, is autogenerated from autopoint
	* autogen.sh: add autopoint stuff
	* configure.ac: fix up gettext stuff
	* gst/Makefile.am: add i18n headers to noinst_HEADERS
	* gst/elements/gsttypefindelement.c: add header include
	* gst/gettext.h: add header, copy from system-installed header
        * gst/gst-i18n-app.h: to be included by each app having translations
        * gst/gst-i18n-lib.h: to be included by each lib having translations
	* gst/gst.c: (init_pre): fix up gettext calls
	* gst/gst_private.h: remove i18n stuff, moving to separate headers
	* po/LINGUAS: the new way to specify translations present
	* po/Makefile.in.in: removed from cvs, autogenerated from autopoint
	* po/Makevars: the variables filled in for GStreamer
	* po/POTFILES.in: added new files with translations
	* po/de.po: has new strings
	* po/nl.po: readded, has new strings

2004-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>

        * gst/gsttag.c: fix some strings marked for translation

2004-01-13  Iain <iain@prettypeople.org>

	* gst/schedulers/gstoptimalscheduler.c (add_to_group): Reference the
	group when we add an element to it, cos we unref it when we remove one

2004-01-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* testsuite/debug/commandline.c: (debug_not_reached):
	* testsuite/debug/output.c: (check_message):
          fix testsuite

2004-01-12  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* examples/cutter/.cvsignore:
	* examples/helloworld/.cvsignore:
	* examples/launch/.cvsignore:
	* examples/manual/.cvsignore:
	* examples/mixer/.cvsignore:
	* examples/pingpong/.cvsignore:
	* examples/plugins/.cvsignore:
	* examples/queue/.cvsignore:
	* examples/queue2/.cvsignore:
	* examples/queue3/.cvsignore:
	* examples/queue4/.cvsignore:
	* examples/retag/.cvsignore:
	* examples/thread/.cvsignore:
	* examples/typefind/.cvsignore:
	* examples/xml/.cvsignore:
	* gst/.cvsignore:
	* gst/autoplug/.cvsignore:
	* gst/elements/.cvsignore:
	* gst/indexers/.cvsignore:
	* gst/parse/.cvsignore:
	* gst/registries/.cvsignore:
	* gst/schedulers/.cvsignore:
	* libs/gst/bytestream/.cvsignore:
	* libs/gst/control/.cvsignore:
	* libs/gst/getbits/.cvsignore:
	* tests/.cvsignore:
	* tests/bufspeed/.cvsignore:
	* tests/instantiate/.cvsignore:
	* tests/memchunk/.cvsignore:
	* tests/muxing/.cvsignore:
	* tests/sched/.cvsignore:
	* tests/seeking/.cvsignore:
	* tests/threadstate/.cvsignore:
	* testsuite/.cvsignore:
	* testsuite/caps/.cvsignore:
	* testsuite/cleanup/.cvsignore:
	* testsuite/dynparams/.cvsignore:
	* testsuite/plugin/.cvsignore:
	* tools/.cvsignore:
	  update - this is huge, because it includes *.bb, *.bbg and *.da files
	  which are generated for gcov.

2004-01-11  David Schleef  <ds@schleef.org>

	* gst/gststructure.c: (gst_strtoi), (gst_value_from_string): Add
	a function to parse integers in ways that strto[u]l() does not.

2004-01-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* tools/gst-inspect.c: (print_caps):
	  improve output of caps a bit

2004-01-11  David Schleef  <ds@schleef.org>

	* gst/gstbuffer.c: (gst_buffer_create_sub): Subbuffers should
	inherit correct flags (READONLY and DONTKEEP).

2004-01-11  David Schleef  <ds@schleef.org>

	* gst/elements/gstfilesrc.c: (gst_filesrc_free_parent_mmap),
	(gst_filesrc_map_region):
	* gst/gstbuffer.c: (_gst_buffer_initialize),
	(_gst_buffer_sub_free), (gst_buffer_default_copy),
	(gst_buffer_new), (gst_buffer_create_sub),
	(gst_buffer_is_span_fast), (gst_buffer_span):
	* gst/gstbuffer.h:
	Change GstBuffer private structure element names. (all files)
	* gst/gstqueue.c: (gst_queue_init), (gst_queue_getcaps),
	(gst_queue_link):
	* gst/gstqueue.h:
	Implement getcaps/pad_link functions that handle the case where
	there are data in the queue.

2004-01-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/elements/gstbufferstore.c:
	  initialize debugging structure correctly
	* gst/elements/gsttee.c: (gst_tee_set_property):
	  g_object_notify when property was changed
	* gst/elements/gsttypefindelement.c:
	(gst_type_find_element_change_state):
	  clear caps correctly

2004-01-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstqueue.c: (gst_queue_init):
	  Use better defaults for when a queue should block. This
	  gets rid of jerky playback for quite a few files.
	  It takes more memory.

2004-01-10  Thomas Vander Stichele  <thomas at apestaart dot org>

	(gst_xml_registry_parse_padtemplate):
          make critical message slightly more useful

2004-01-10  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstinfo.c: (gst_debug_log), (gst_debug_log_valist),
	(gst_debug_message_get), (gst_debug_log_default):
	* gst/gstinfo.h:
	  Change gst_debug_log(_valist) to take a const format string.
	  Change prototype of log function and functions using those to 
	  take a GstDebugMessage instead of a string that requires using
	  gst_debug_message_get.

2004-01-08  David Schleef  <ds@schleef.org>

	* Makefile.am:
	* configure.ac:
	Add option --enable-gcov to build GStreamer with -fprofile-arcs
	and -ftest-coverage, which allows gcov to show information about
	testsuite coverage.

2004-01-08  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstutils.h:
	  Add GST_BOILERPLATE(_FULL), GST_PARENT_CALL and
	  GST_PARENT_CALL_WITH_DEFAULT
	* gst/elements/gstaggregator.c: 
	* gst/elements/gstbufferstore.c: 
	* gst/elements/gstfakesink.c: 
	* gst/elements/gstfakesrc.c: 
	* gst/elements/gstfdsink.c: 
	* gst/elements/gstfdsrc.c: 
	* gst/elements/gstfilesink.c: 
	* gst/elements/gstfilesrc.c: 
	* gst/elements/gstidentity.c: 
	* gst/elements/gstmd5sink.c: 
	* gst/elements/gstmultidisksrc.c:
	* gst/elements/gstpipefilter.c: 
	* gst/elements/gstshaper.c:
	* gst/elements/gststatistics.c:
	* gst/elements/gsttee.c:
	* gst/elements/gsttypefindelement.c:
	  use them.

2004-01-07  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-docs.sgml: remove props
	* docs/gst/gstreamer-sections.txt: remove props
	* docs/gst/tmpl/gst.sgml:
	* docs/gst/tmpl/gstbin.sgml:
	* docs/gst/tmpl/gstbuffer.sgml:
	* docs/gst/tmpl/gstcaps.sgml:
	* docs/gst/tmpl/gstclock.sgml:
	* docs/gst/tmpl/gstelement.sgml:
	* docs/gst/tmpl/gstindex.sgml:
	* docs/gst/tmpl/gstobject.sgml:
	* docs/gst/tmpl/gstpad.sgml:
	* docs/gst/tmpl/gstpadtemplate.sgml:
	* docs/gst/tmpl/gstreamer-unused.sgml:
	* docs/gst/tmpl/gstthread.sgml:
	* docs/gst/tmpl/gstxml.sgml:
	  sync with code reorganization

2004-01-07  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstelement.c: (gst_element_get_compatible_pad_filtered):
	Make the 'Could not find compatible pad' message more informative.

2004-01-07  Ronald Bultje  <rbultje@ronald.bitfreak.net>
                                                                                
        * gst/elements/gstfilesink.c: (gst_filesink_set_location):
          Fix for if we pass NULL as property to location.
        * gst/elements/gstpipefilter.c: (gst_pipefilter_init),
        (gst_pipefilter_handle_event), (gst_pipefilter_chain):
          Fix for instantiate-test (see below).
        * gst/gststructure.c: (_gst_structure_parse_value):
          Fix compile error on gcc-2.96.
        * configure.ac:
        * tests/Makefile.am:
        * tests/instantiate/Makefile.am:
        * tests/instantiate/create.c: (create_all_elements), (main):
          Add a test that instantiates all elements. This makes it easy to
          track dead code for old API/design (like setting event functions
          on sink pads and so on).

2004-01-06  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstcaps.c: (gst_caps_append_structure):
	  Move the poisoning to allow a NULL structure
	* gst/gstevent.c: (_gst_event_free):
	  When freeing a navigation event, free the structure
	  also

2004-01-04  David Schleef  <ds@schleef.org>

	* gst/elements/gsttee.c: (gst_tee_init), (gst_tee_request_new_pad):
	Remove usage of gst_pad_proxy_fixate.
	* gst/gstcaps.c: (gst_caps_append), (gst_caps_append_structure),
	(gst_caps_split_one), (gst_caps_replace):
	Add poisoning code.
	* gst/gstmarshal.list:
	Add pointer__pointer for fixate signal
	* gst/gstpad.c: (gst_real_pad_class_init),
	(_gst_real_pad_fixate_accumulator), (gst_pad_link_fixate),
	(_gst_pad_default_fixate_func), (gst_pad_proxy_fixate),
	(gst_pad_set_explicit_caps), (gst_pad_template_new):
	Add poisoning code. Add fixate signal on RealPad. Change
	set_explicit_caps() to take const GstCaps, like try_set_caps().
	* gst/gstpad.h:
	* testsuite/caps/Makefile.am:
	* testsuite/caps/app_fixate.c: Add a test for the fixate signal

2004-01-03  David Schleef  <ds@schleef.org>

	* gst/elements/gsttypefindelement.c:
	(gst_type_find_element_have_type), (gst_type_find_element_init):
	Use gst_pad_use_explicit_caps for src pad.
	* gst/gstpad.c: (gst_pad_try_set_caps):  Check that link exists
	before using it.

2004-01-03  David Schleef  <ds@schleef.org>

	* gst/gstelement.c: (gst_element_link_pads_filtered),
	(gst_element_negotiate_pads): Fix to allow DELAYED to indicate
	that linking was successful.
	* gst/gstpad.c: (gst_pad_link_free),
	(gst_pad_link_call_link_functions), (gst_pad_link_negotiate),
	(gst_pad_link_try), (gst_pad_link_unnegotiate),
	(gst_pad_unnegotiate), (gst_pad_set_explicit_caps): Pass
	GstPadLinkReturn correctly between functions, and don't fail
	when DELAYED is used (DELAYED is very important).  Better
	cleanup on unlinking and unnegotiation.  Should fix some spider
	bugs.

2004-01-02  David Schleef  <ds@schleef.org>

	* gst/gstelement.c: (gst_element_class_init),
	(gst_element_base_class_init): ->padtemplates should be cleared
	in base_init, since we need to have a fresh list for every
	class.  (Alternately, we chould copy the list and share the
	actual pad templates (not the list), but that would require
	changing every plugin to move pad template registration from
	base_init to class_init.)

2004-01-03  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstelement.c: (gst_element_class_add_pad_template):
	  Refuse registering a pad template if another pad template
	  with the same name already exists (#114715).

2004-01-02  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c: (_gst_structure_is_equal_foreach),
	(gst_caps_is_equal_fixed): Add new function.
	* gst/gstcaps.h: ditto.
	* gst/gstpad.c: (gst_real_pad_class_init),
	(gst_pad_link_call_link_functions), (gst_pad_try_set_caps),
	(gst_pad_set_explicit_caps), (gst_pad_get_caps):  In try_set_caps,
	check new caps against existing caps -- if they're the same, return
	OK without renegotiating.  caps-nego-failed signal fixed so that
	the marshaller isn't VOID__OBJECT.  Also changed to G_TYPE_POINTER
	to save an extra caps copy.  Don't complete negotiation if a pad
	link function returns DELAYED.

2004-01-02  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstpad.c: (gst_pad_try_relink_filtered):
	  Fix wrong g_return_if_fail

2004-01-03  Jan Schmidt  <thaytan@mad.scientist.com>

	* gst/gstbin.c: (gst_bin_class_init):
	Change the marshalling of element_added/element_removed
	to use gst_marshal_VOID__OBJECT, since gst_marshal_VOID__POINTER 
	complains that GST_TYPE_ELEMENT is not G_TYPE_POINTER

2004-01-01  David Schleef  <ds@schleef.org>

	* gst/gstpad.c: (gst_pad_set_explicit_caps),
	(gst_pad_explicit_getcaps), (gst_pad_explicit_link),
	(gst_pad_use_explicit_caps):
	* gst/gstpad.h:
	Add new functions.  gst_pad_use_explicit_caps() sets up a pad
	to use an internal getcaps and link fuction so that negotiation
	always results in the explicitly set caps.
	gst_pad_set_explicit_caps() sets the explicit caps.  These functions
	are particularly useful for decoders.

2003-12-31  David Schleef  <ds@schleef.org>

	* gst/elements/gstidentity.c: (gst_identity_class_init),
	(gst_identity_init), (gst_identity_chain),
	(gst_identity_set_property), (gst_identity_get_property):
	* gst/elements/gstidentity.h:
	* gst/gstqueue.c: (gst_queue_init):
	  Negotiation fixes.

2003-12-31  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c: (gst_caps_intersect),
	(_gst_caps_normalize_foreach), (gst_caps_normalize):
	  Implement gst_caps_normalize().
	* testsuite/caps/normalisation.c: (main):
	  Add an additional test

2003-12-31  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstqueue.c: (gst_queue_init):
	  use gst_pad_proxy_getcaps()

2003-12-31  David Schleef  <ds@schleef.org>

	* gst/elements/gstshaper.c: (gst_shaper_link):
	* gst/elements/gsttee.c: (gst_tee_init), (gst_tee_request_new_pad):
	* gst/gstqueue.c: (gst_queue_link):
	  Negotiation fixes.

2003-12-31  David Schleef  <ds@schleef.org>

	* gst/gstpad.c: (gst_pad_proxy_pad_link), (gst_pad_proxy_fixate):
	* gst/gstpad.h: Add functions that are useful as default pad
	link and fixate functions for elements.

2003-12-30  David Schleef  <ds@schleef.org>

	* gst/gstpad.c: (gst_pad_link_try):
	  Fix segfault when attempting to return to old caps

2003-12-29  David Schleef  <ds@schleef.org>

	* gst/gstcaps.c: (gst_caps_normalize), (simplify_foreach),
	(gst_caps_structure_simplify), (gst_caps_simplify):
	* gst/gstcaps.h:
	  Add simplify function
	* gst/gstpad.c: (gst_pad_link_try), (gst_pad_try_set_caps),
	(gst_pad_perform_negotiate), (gst_pad_is_negotiated):
	* gst/gstpad.h:
	  Copy over srcnotify, sinknotify when calling old pad_link
	  functions.  Add new is_negotiated() function.
	* gst/gststructure.c: (gst_structure_copy):
	  Fix an incredibly stupid bug that should have been noticed
	  weeks ago.  _copy() returned the argument, not the new copy.

2003-12-27  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/gstcaps.c: (gst_caps_append):
	  add sanity checks
	* gst/gstcaps.h: (gst_caps_debug):
	  remove, it doesn't exist anymore.
	* gst/gstelement.c: (gst_element_threadsafe_properties_pre_run),
	(gst_element_threadsafe_properties_post_run):
	  make debugging messages not clutter up THREAD debug category
	(gst_element_negotiate_pads), (gst_element_clear_pad_caps),
	(gst_element_change_state):
	  update to new caps API
	* gst/gstinterface.c: (gst_implements_interface_cast):
	  don't put vital code in g_return_if_fail
	* gst/gstpad.c: (gst_pad_link_try), (gst_pad_try_set_caps), 
	(gst_pad_link_filtered):
	  add pst_pad_try_link and use it.
	(gst_pad_perform_negotiate), (gst_pad_renegotiate):
	  implement correctly, deprecate first one.
	(gst_pad_link_unnegotiate), (gst_pad_unnegotiate):
	  add and implement.
	(gst_pad_try_relink_filtered), (gst_pad_relink_filtered):
	  implement.
	(gst_pad_get_negotiated_caps):
	  add and implement. Make GST_PAD_CAPS call this function.
	(gst_pad_get_caps):
	  remove unneeded check..
	(gst_pad_recover_caps_error):
	  disable, always return FALSE.
	(gst_real_pad_dispose):
	  don't free caps and appfilter anymore, they're unused.
	* gst/gstpad.h:
	  Reflect changes mentioned above.
	* gst/gstsystemclock.c: (gst_system_clock_wait):
	  Make 'clock is way behind' a debugging message.
	* gst/gstthread.c: (gst_thread_change_state):
	  Fix debugging message

2003-12-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstinfo.h:
          fix GST_DEBUG_CATEGORY_INIT gtk-doc description
	* docs/gst/tmpl/gstreamer-unused.sgml:
          removed all traces of cvs conflicts

2003-12-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* gst/schedulers/cothreads_compat.h:
	* libs/Makefile.am:
          remove last instances of wingo cothread usage

2003-12-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstplugin.c:
	* gst/gstversion.h.in:
	* gst/parse/grammar.y:
          change comment block from /** to /* when not gtk-doc comments

2003-12-24  Thomas Vander Stichele  <thomas at apestaart dot org>

        * gst/gst.c: whitespace and doc style fixes

2003-12-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* gst/gstformat.h: remove trailing whitespace from enum for gtk-doc

2003-12-24  Colin Walters  <walters@verbum.org>

	* gst/elements/gsttypefindelement.c:
	  gst/elements/gsttypefindelement.h: Make GstCaps parameter const.
	  Copy caps parameter. Use _POINTER to marshal caps instead of _BOXED.
	  Don't double-free caps.

2003-12-23  David Schleef  <ds@schleef.org>

	* gst/gstelement.c, gst/gstpad.c, gst/parse/grammar.y,
	  gst/gstcaps.c, gst/autoplug/gstspideridentity.c:
	  Many little fixes and additions of debug statements to
	  get rhythmbox working.

2003-12-23  Colin Walters  <walters@verbum.org>

	* gst/autoplug/gstspideridentity.c (gst_spider_identity_sink_loop_type_finding):
	Use GST_PAD_LINK_SUCCESSFUL.

2003-12-23  David Schleef  <ds@schleef.org>

	* gst/elements/gstaggregator.c:
	* gst/elements/gsttee.c:
	  Use gst_pad_proxy_getcaps().
	* gst/gstpad.c:
	* gst/gstpad.h:
	  Add gst_pad_proxy_getcaps(), which filter elements can use
	  as a generic getcaps implementation.
	  Fix gst_pad_get_allowed_caps().  It just wasn't doing what
	  was advertised.

2003-12-23  David Schleef  <ds@schleef.org>

	* gst/gstpad.c:
	  Rearrange/rewrite much of the pad negotiation code, since it
	  resembled pasta.  This actually changes the way some
	  negotiation works, since the previous code was inconsistent
	  depending on how it was invoked.  Add (internal) structure
	  GstPadLink, which is used to hold some information (more in
	  the future) about the link between two pads.  Fixes a number
	  of bugs, including random lossage of filter caps when the
	  initial negotiation is delayed.  A few functions are still
	  unimplemented.
	* gst/gstpad.h:
	  Add GST_PAD_LINK_{SUCESSFUL|FAILED}() macros.  Please use
	  these when testing GstPadLinkReturn values instead of comparing
	  directly.

2003-12-23  David Schleef  <ds@schleef.org>

	* gst/gstvalue.c: 
	* gst/gstvalue.h:
	  Rearrange lots of code.  Change registration of compare function
	  into registration of compare/serialize/deserialize functions.
	  Doesn't include implementation of gst_value_[de]serialize(),
	  but that should be easy.

2003-12-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* docs/gst/gstreamer-sections.txt:
	* docs/gst/tmpl/gstprops.sgml: removed
        * docs/gst/tmpl/gstreamer-bufferpool.sgml: removed
          David removed props and caps code, so let's remove their docs as well.
          Removed all no longer existing symbols from gstreamer-sections.txt
          
2003-12-22  Colin Walters  <walters@verbum.org>

	* gst/gsttaginterface.c, gst/gsttaginterface.h,
	  gst/gsttag.c, gst/gsttag.h:  Add interface to setting GValues
	  of tags directly.

2003-12-22  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/elements/gstelements.c:
	  Set ranks of elements to NONE, so the autoplugger doesn't use them.
	* gst/elements/gstshaper.c: (gst_shaper_getcaps):
	  Fix proxying to new CAPS stuff. Don't call get_allowed_caps but
	  gst_caps (peer).

2003-12-22  Benjamin Otte  <in7y118@public.uni-hamburg.de>

	* gst/autoplug/gstsearchfuncs.c: (gst_autoplug_caps_intersect):
	* gst/autoplug/gstspideridentity.c: (gst_spider_identity_link),
	(gst_spider_identity_getcaps), (gst_spider_identity_change_state),
	(gst_spider_identity_sink_loop_type_finding):
	* gst/autoplug/gstspideridentity.h:
	  Fix autoplugging in spider element, so it works with new caps.
	  This was mainly caused by identifying empty caps incorrectly.

2003-12-22  David Schleef  <ds@schleef.org>

	* gststructure.c, gstvalue.c, gstvalue.h: Add
	  gst_value_init_and_copy() and use it, to avoid silly mistakes in
	  using g_value_copy()

2003-12-21  David Schleef  <ds@schleef.org>

	* many, many files: Merge CAPS branch.  This includes:
	  - implemention of GstValue and several GstValue types
	  - implemention of GstStructure
	  - entire rewrite of GstCaps
	  - removal of GstProps
	  - many changes to GstPad to compensate for new caps paradigm
	  - removal of GstBufferpool
	* gst/Makefile.am, gst/gst.h, gst/gstpad.h, gst/gsttypefind.h,
	gstvalue.h, gst/gstcaps[2]*.[ch]:
	  - rename gstcaps2.[ch] to gstcaps.[ch]

2003-12-21  Ronald Bultje  <rbultje@ronald.bitfreak.net>

	* gst/gstqueue.c: (gst_queue_handle_pending_events),
	(gst_queue_chain), (gst_queue_handle_src_event):
	  implement timeout for sending events. Workaround for if the
	  pipeline on this queue is not passing any data.

2003-12-21  Ronald Bultje <rbultje@ronald.bitfreak.net>
                                                                                
        * ChangeLog: moved to gstreamer/docs/random/old/ChangeLog.gstreamer
        * moved CVS to freedesktop.org
