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

