This is GStreamer 1.0.3

Changes since 1.0.2:

      * bufferpool: fix deadlock
      * baseparse: forward stream-start event in push mode, fixing issues with streamsynchronizer
      * basesink: reset START_TIME when needed, fixing position reporting after seeking beyond end

Bugs fixed since 1.0.2:

      * 666053 : baseparse: prevent excessively high memory usage with large streams
      * 687896 : bufferpool: deadlock in GstBufferPool
      * 688477 : inputselector: fix clock leak in wait_running_time
      * 688511 : Windows compilers without pthreads still have testrtpool.c being built in tests
      * 688655 : baseparse: stream-start events not sent in push mode
      * 685870 : Regression with position when seeking beyond the media duration

Changes since 1.0.1:

      * Parallel installability with 0.10.x series
      * collectpads: ensure all timestamps are in same time domain
      * gobject-introspection: fix GstSample annotations
      * add GstElement::post_message() vfunc
      * info: allow gst_debug_add_log_function() to be called before gst_init()
      * event: allow GST_CLOCK_TIME_NONE as duration for GAP events
      * documentation: new chapters and updates for the application development manual and the plugin writer's guide

Bugs fixed since 1.0.1:

      * 686456 : g_type_init is no longer required
      * 686658 : allocator: fix memory leak in _fallback_mem_copy
      * 686659 : preset: remove variable not read
      * 686723 : basesrc: generic/states test in -base now hangs with appsrc
      * 686787 : testrtpool must be linked to pthreads

Changes since 1.0.0:

      * Capsfilter prefers filter caps over passthrough now
      * Application Development Manual, Plugin Writer's Guide and other documentation updated and extended for 1.0
      * Bug fixes 

Bugs fixed since 1.0.0:

      * 680862 : identity with single-segment=true gives buffer.pts of CLOCK_TIME_NONE
      * 684538 : baseparse: no timestamps after seeking in mp3 or aac
      * 684755 : typo - whithin > within
      * 684765 : Plugins without a klass in the metadata crashes autoaudiosink
      * 684809 : proxypad don't hold a ref to their internal pad while streaming through it
      * 684970 : Don't register printf extension for %p when glib is not using system printf
      * 684981 : Pipeline hangs on PREROLLING negotiating caps
      * 685072 : memory: map(READ)/unmap clears the READONLY status

API additions since 1.0.0:

      * gst_base_transform_set_prefer_passthrough()

New features in 1.0.0:

      * Parallel installability with 0.10.x series
      * See release notes for more details

