diff --git a/docs/gst/gstreamer-sections.txt b/docs/gst/gstreamer-sections.txt
index bbdabe5..0ad30fc 100644
--- a/docs/gst/gstreamer-sections.txt
+++ b/docs/gst/gstreamer-sections.txt
@@ -36,6 +36,8 @@
 GstQuarkId
 GstPluginLoader
 GstPluginLoaderFuncs
+GstAllocTrace
+GstAllocTraceFlags
 </SECTION>
 
 <SECTION>
@@ -158,7 +160,6 @@
 <TITLE>GstBuffer</TITLE>
 GstBuffer
 GstBufferFlags
-GstBufferCopyFlags
 GST_BUFFER_FLAGS
 GST_BUFFER_FLAG_IS_SET
 GST_BUFFER_FLAG_SET
@@ -178,7 +179,6 @@
 GST_BUFFER_IS_DISCONT
 
 gst_buffer_new
-gst_buffer_new_and_alloc
 gst_buffer_new_allocate
 gst_buffer_new_wrapped
 gst_buffer_new_wrapped_full
@@ -210,6 +210,7 @@
 gst_buffer_fill
 gst_buffer_memset
 
+GstBufferCopyFlags
 GST_BUFFER_COPY_METADATA
 GST_BUFFER_COPY_ALL
 gst_buffer_copy
@@ -226,6 +227,8 @@
 gst_buffer_add_meta
 gst_buffer_remove_meta
 gst_buffer_iterate_meta
+GstBufferForeachMetaFunc
+gst_buffer_foreach_meta
 
 <SUBSECTION Standard>
 GstBufferClass
@@ -239,6 +242,8 @@
 gst_buffer_get_type
 gst_buffer_flags_get_type
 gst_buffer_copy_flags_get_type
+GST_BUFFER_TIMESTAMP
+GST_BUFFER_TIMESTAMP_IS_VALID
 </SECTION>
 
 <SECTION>
@@ -254,8 +259,11 @@
 GstMetaInitFunction
 GstMetaFreeFunction
 GstMetaTransformFunction
+GstMetaTransformCopy
+GST_META_TRANSFORM_IS_COPY
 gst_meta_api_type_register
 gst_meta_api_type_has_tag
+GST_META_TAG_MEMORY
 gst_meta_register
 gst_meta_get_info
 <SUBSECTION Standard>
@@ -271,18 +279,19 @@
 <TITLE>GstBufferPool</TITLE>
 GstBufferPool
 GstBufferPoolClass
-GstBufferPoolFlags
 GST_BUFFER_POOL_IS_FLUSHING
-GstBufferPoolParams
 gst_buffer_pool_new
 
-gst_buffer_pool_config_get
-gst_buffer_pool_config_set
+gst_buffer_pool_config_get_params
+gst_buffer_pool_config_set_params
+gst_buffer_pool_config_get_allocator
+gst_buffer_pool_config_set_allocator
 
+gst_buffer_pool_config_n_options
 gst_buffer_pool_config_add_option
 gst_buffer_pool_config_get_option
 gst_buffer_pool_config_has_option
-gst_buffer_pool_config_n_options
+
 gst_buffer_pool_get_options
 gst_buffer_pool_has_option
 
@@ -292,6 +301,8 @@
 gst_buffer_pool_set_active
 gst_buffer_pool_is_active
 
+GstBufferPoolAcquireFlags
+GstBufferPoolAcquireParams
 gst_buffer_pool_acquire_buffer
 gst_buffer_pool_release_buffer
 <SUBSECTION Standard>
@@ -302,8 +313,8 @@
 GST_IS_BUFFER_POOL
 GST_TYPE_BUFFER_POOL
 gst_buffer_pool_get_type
-GST_TYPE_BUFFER_POOL_FLAGS
-gst_buffer_pool_flags_get_type
+GST_TYPE_BUFFER_POOL_ACQUIRE_FLAGS
+gst_buffer_pool_acquire_flags_get_type
 GST_IS_BUFFER_POOL_CLASS
 GST_BUFFER_POOL_GET_CLASS
 </SECTION>
@@ -361,6 +372,7 @@
 GST_CAPS_FLAG_UNSET
 
 gst_caps_new_empty
+gst_caps_new_empty_simple
 gst_caps_new_any
 gst_caps_new_simple
 gst_caps_new_full
@@ -386,23 +398,24 @@
 gst_caps_is_fixed
 gst_caps_is_equal
 gst_caps_is_equal_fixed
+gst_caps_is_strictly_equal
 gst_caps_is_always_compatible
 gst_caps_is_subset
 gst_caps_is_subset_structure
 gst_caps_can_intersect
 gst_caps_intersect
 gst_caps_intersect_full
-gst_caps_union
 gst_caps_normalize
 gst_caps_simplify
 gst_caps_replace
+gst_caps_take
 gst_caps_to_string
 gst_caps_from_string
 gst_caps_subtract
 gst_caps_make_writable
-gst_caps_ref
 gst_caps_truncate
 gst_caps_fixate
+gst_caps_ref
 gst_caps_unref
 <SUBSECTION Standard>
 GST_CAPS
@@ -428,9 +441,6 @@
 gst_sample_new
 gst_sample_ref
 gst_sample_unref
-gst_value_get_sample
-gst_value_set_sample
-gst_value_take_sample
 <SUBSECTION Standard>
 GST_IS_SAMPLE
 GST_SAMPLE
@@ -516,6 +526,8 @@
 gst_clock_unadjust_unlocked
 gst_clock_get_calibration
 gst_clock_set_calibration
+gst_clock_get_timeout
+gst_clock_set_timeout
 gst_clock_id_get_time
 gst_clock_id_wait
 gst_clock_id_wait_async
@@ -558,6 +570,12 @@
 gst_element_factory_get_icon_name
 gst_element_factory_get_klass
 gst_element_factory_get_longname
+gst_pad_get_caps_reffed
+gst_pad_peer_get_caps_reffed
+gst_buffer_new_and_alloc
+GST_BUFFER_TIMESTAMP
+GST_BUFFER_TIMESTAMP_IS_VALID
+gst_adapter_prev_timestamp
 <SUBSECTION Private>
 </SECTION>
 
@@ -608,6 +626,7 @@
 <SECTION>
 <FILE>gstcontrolsource</FILE>
 <TITLE>GstControlSource</TITLE>
+GstValueArray
 GstControlSource
 GstControlSourceClass
 GstControlSourceGetValue
@@ -767,7 +786,7 @@
 GST_STATE_UNLOCK_FULL
 GST_STATE_LOCK_FULL
 GST_STATE_WAIT
-GST_STATE_TIMED_WAIT
+GST_STATE_WAIT_UNTIL
 GST_STATE_SIGNAL
 GST_STATE_BROADCAST
 
@@ -1009,6 +1028,8 @@
 gst_seek_flags_get_type
 gst_qos_type_get_type
 gst_event_type_flags_get_type
+GST_TYPE_STREAM_CONFIG_FLAGS
+gst_stream_config_flags_get_type
 </SECTION>
 
 <SECTION>
@@ -1170,6 +1191,8 @@
 gst_debug_print_stack_trace
 GST_TIME_FORMAT
 GST_TIME_ARGS
+gst_debug_bin_to_dot_file
+gst_debug_bin_to_dot_file_with_ts
 <SUBSECTION Standard>
 GST_TYPE_DEBUG_COLOR_FLAGS
 GST_TYPE_DEBUG_LEVEL
@@ -1236,17 +1259,26 @@
 <SECTION>
 <FILE>gstmemory</FILE>
 <TITLE>GstMemory</TITLE>
-GstMemory
-GstMemoryInfo
-GstAllocator
+
+gst_memory_alignment
+
 GstMemoryFlags
-GstMapInfo
-GST_MAP_INFO_INIT
-GstMapFlags
 GST_MEMORY_FLAGS
 GST_MEMORY_FLAG_IS_SET
+GST_MEMORY_FLAG_UNSET
 GST_MEMORY_IS_READONLY
+GST_MEMORY_IS_ZERO_PADDED
+GST_MEMORY_IS_ZERO_PREFIXED
+
+GstMemory
+
+GstMapFlags
+GstMapInfo
+GST_MAP_INFO_INIT
 GST_MAP_READWRITE
+
+GstAllocationParams
+
 GstAllocatorAllocFunction
 GstMemoryMapFunction
 GstMemoryUnmapFunction
@@ -1255,20 +1287,37 @@
 GstMemoryShareFunction
 GstMemoryIsSpanFunction
 
-gst_memory_alignment
+GstMemoryInfo
+
+GstAllocator
+
+gst_allocator_new
+gst_allocator_get_memory_type
+gst_allocator_ref
+gst_allocator_unref
+
+GST_ALLOCATOR_SYSMEM
+gst_allocator_find
+gst_allocator_register
+gst_allocator_set_default
+
+gst_allocation_params_init
+gst_allocation_params_copy
+gst_allocation_params_free
 
 gst_allocator_alloc
+
 gst_memory_new_wrapped
-gst_memory_make_mapped
 
 gst_memory_ref
 gst_memory_unref
 
+gst_memory_is_exclusive
+
 gst_memory_get_sizes
 gst_memory_resize
 
-gst_memory_is_exclusive
-
+gst_memory_make_mapped
 gst_memory_map
 gst_memory_unmap
 
@@ -1276,19 +1325,18 @@
 gst_memory_share
 
 gst_memory_is_span
-
-GST_ALLOCATOR_SYSMEM
-gst_allocator_find
-gst_allocator_register
-gst_allocator_set_default
 <SUBSECTION Standard>
 GST_TYPE_MEMORY
+gst_memory_get_type
 GST_MEMORY_CAST
 GST_TYPE_MAP_FLAGS
-GST_TYPE_MEMORY_FLAGS
 gst_map_flags_get_type
+GST_TYPE_MEMORY_FLAGS
 gst_memory_flags_get_type
-gst_memory_get_type
+GST_TYPE_ALLOCATION_PARAMS
+gst_allocation_params_get_type
+GST_TYPE_ALLOCATOR
+gst_allocator_get_type
 </SECTION>
 
 <SECTION>
@@ -1396,7 +1444,7 @@
 gst_structure_change_type_get_type
 gst_stream_status_type_get_type
 gst_progress_type_get_type
-GST_MESSAGE_COND
+GST_MESSAGE_GET_COND
 GST_MESSAGE_GET_LOCK
 GST_MESSAGE_LOCK
 GST_MESSAGE_SIGNAL
@@ -1530,18 +1578,6 @@
 GST_PAD_LINK_CHECK_DEFAULT
 GstFlowReturn
 GstPadMode
-GstPadProbeReturn
-GstPadProbeType
-GST_PAD_PROBE_TYPE_BLOCKING
-GST_PAD_PROBE_TYPE_SCHEDULING
-GST_PAD_PROBE_TYPE_ALL_BOTH
-GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM
-GST_PAD_PROBE_TYPE_BLOCK_UPSTREAM
-GST_PAD_PROBE_TYPE_DATA_BOTH
-GST_PAD_PROBE_TYPE_DATA_DOWNSTREAM
-GST_PAD_PROBE_TYPE_DATA_UPSTREAM
-GST_PAD_PROBE_TYPE_EVENT_BOTH
-GST_PAD_PROBE_TYPE_QUERY_BOTH
 
 <SUBSECTION Application>
 gst_pad_get_name
@@ -1571,15 +1607,44 @@
 
 gst_pad_is_active
 
-gst_pad_is_blocked
-gst_pad_is_blocking
+<SUBSECTION probes>
+GstPadProbeReturn
+GstPadProbeType
+GST_PAD_PROBE_TYPE_BLOCKING
+GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM
+GST_PAD_PROBE_TYPE_BLOCK_UPSTREAM
+GST_PAD_PROBE_TYPE_DATA_DOWNSTREAM
+GST_PAD_PROBE_TYPE_DATA_UPSTREAM
+GST_PAD_PROBE_TYPE_DATA_BOTH
+GST_PAD_PROBE_TYPE_EVENT_BOTH
+GST_PAD_PROBE_TYPE_QUERY_BOTH
+GST_PAD_PROBE_TYPE_ALL_BOTH
+GST_PAD_PROBE_TYPE_SCHEDULING
+
+GstPadProbeInfo
+GST_PAD_PROBE_INFO_TYPE
+GST_PAD_PROBE_INFO_ID
+GST_PAD_PROBE_INFO_DATA
+
+GST_PAD_PROBE_INFO_BUFFER
+GST_PAD_PROBE_INFO_BUFFER_LIST
+GST_PAD_PROBE_INFO_EVENT
+GST_PAD_PROBE_INFO_QUERY
+
+GST_PAD_PROBE_INFO_OFFSET
+GST_PAD_PROBE_INFO_SIZE
 
 GstPadProbeCallback
 gst_pad_add_probe
 gst_pad_remove_probe
 
+gst_pad_is_blocked
+gst_pad_is_blocking
+
+<SUBSECTION offset>
 gst_pad_get_offset
 gst_pad_set_offset
+
 <SUBSECTION Element>
 gst_pad_new
 gst_pad_new_from_template
@@ -1692,8 +1757,8 @@
 GST_TYPE_PAD_PRESENCE
 GST_TYPE_PAD_MODE
 GST_TYPE_FLOW_RETURN
-GST_TYPE_PROBE_RETURN
-GST_TYPE_PROBE_TYPE
+GST_TYPE_PAD_PROBE_RETURN
+GST_TYPE_PAD_PROBE_TYPE
 
 <SUBSECTION Private>
 gst_pad_get_type
@@ -1704,8 +1769,8 @@
 gst_pad_presence_get_type
 gst_flow_return_get_type
 gst_pad_mode_get_type
-gst_probe_return_get_type
-gst_probe_type_get_type
+gst_pad_probe_return_get_type
+gst_pad_probe_type_get_type
 
 GST_PAD_NAME
 GST_PAD_PARENT
@@ -1717,8 +1782,15 @@
 GST_PAD_IS_SRC
 GST_PAD_IS_SINK
 GST_PAD_IS_FIXED_CAPS
-GST_PAD_NEEDS_EVENTS
 GST_PAD_NEEDS_RECONFIGURE
+GST_PAD_HAS_PENDING_EVENTS
+GST_PAD_IS_PROXY_ALLOCATION
+GST_PAD_IS_PROXY_CAPS
+GST_PAD_NEEDS_PARENT
+GST_PAD_SET_PROXY_ALLOCATION
+GST_PAD_UNSET_PROXY_ALLOCATION
+GST_PAD_SET_PROXY_CAPS
+GST_PAD_UNSET_PROXY_CAPS
 
 GST_PAD_IS_IN_GETCAPS
 GST_PAD_MODE_ACTIVATE
@@ -2032,17 +2104,23 @@
 <FILE>gstquery</FILE>
 <TITLE>GstQuery</TITLE>
 GstQuery
-GstQueryType
-GST_QUERY_TYPE_NAME
-GstQueryTypeDefinition
 
+GstQueryTypeFlags
+GST_QUERY_TYPE_BOTH
+GST_QUERY_MAKE_TYPE
+
+GstQueryType
+
+GST_QUERY_TYPE
+GST_QUERY_TYPE_NAME
+
+GST_QUERY_IS_UPSTREAM
+GST_QUERY_IS_DOWNSTREAM
+GST_QUERY_IS_SERIALIZED
+
+gst_query_type_get_flags
 gst_query_type_get_name
 gst_query_type_to_quark
-gst_query_type_register
-gst_query_type_get_by_nick
-gst_query_types_contains
-gst_query_type_get_details
-gst_query_type_iterate_definitions
 
 gst_query_ref
 gst_query_unref
@@ -2087,10 +2165,13 @@
 
 gst_query_new_caps
 gst_query_parse_caps
+gst_query_set_caps_result
 gst_query_parse_caps_result
+gst_query_intersect_caps_result
 
 gst_query_new_accept_caps
 gst_query_parse_accept_caps
+gst_query_set_accept_caps_result
 gst_query_parse_accept_caps_result
 
 GstBufferingMode
@@ -2111,19 +2192,34 @@
 
 gst_query_new_allocation
 gst_query_parse_allocation
-gst_query_parse_allocation_params
-gst_query_parse_nth_allocation_memory
-gst_query_parse_nth_allocation_meta
-gst_query_set_allocation_params
-gst_query_add_allocation_memory
-gst_query_add_allocation_meta
-gst_query_has_allocation_meta
-gst_query_get_n_allocation_memories
-gst_query_get_n_allocation_metas
 
+gst_query_add_allocation_pool
+gst_query_get_n_allocation_pools
+gst_query_parse_nth_allocation_pool
+gst_query_set_nth_allocation_pool
+
+gst_query_add_allocation_param
+gst_query_get_n_allocation_params
+gst_query_parse_nth_allocation_param
+gst_query_set_nth_allocation_param
+
+gst_query_add_allocation_meta
+gst_query_get_n_allocation_metas
+gst_query_parse_nth_allocation_meta
+gst_query_remove_nth_allocation_meta
+gst_query_has_allocation_meta
+
+GstSchedulingFlags
 gst_query_new_scheduling
 gst_query_parse_scheduling
 gst_query_set_scheduling
+gst_query_add_scheduling_mode
+gst_query_get_n_scheduling_modes
+gst_query_parse_nth_scheduling_mode
+gst_query_has_scheduling_mode
+
+gst_query_new_drain
+
 <SUBSECTION Standard>
 GstQueryClass
 GST_QUERY
@@ -2134,12 +2230,16 @@
 GST_TYPE_QUERY
 GST_TYPE_QUERY_TYPE
 GST_QUERY_GET_CLASS
-GST_QUERY_TYPE
+GST_TYPE_QUERY_TYPE_FLAGS
+gst_query_type_flags_get_type
 GST_TYPE_BUFFERING_MODE
+gst_buffering_mode_get_type
+GST_TYPE_SCHEDULING_FLAGS
+gst_scheduling_flags_get_type
 <SUBSECTION Private>
+GST_QUERY_NUM_SHIFT
 gst_query_get_type
 gst_query_type_get_type
-gst_buffering_mode_get_type
 </SECTION>
 
 
@@ -2615,6 +2715,8 @@
 GstURIHandler
 GstURIHandlerInterface
 GstURIType
+GstURIError
+gst_uri_error_quark
 GST_URI_TYPE_IS_VALID
 gst_uri_protocol_is_valid
 gst_uri_protocol_is_supported
@@ -2635,6 +2737,9 @@
 GST_URI_HANDLER_GET_INTERFACE
 GST_TYPE_URI_HANDLER
 GST_TYPE_URI_TYPE
+gst_uri_error_get_type
+GST_TYPE_URI_ERROR
+GST_URI_ERROR
 <SUBSECTION Private>
 gst_uri_handler_get_type
 gst_uri_type_get_type
@@ -2710,6 +2815,7 @@
 gst_util_uint64_scale_int_round
 gst_util_uint64_scale_int_ceil
 gst_util_greatest_common_divisor
+gst_util_greatest_common_divisor_int64
 gst_util_fraction_to_double
 gst_util_double_to_fraction
 gst_util_fraction_multiply
@@ -2769,6 +2875,14 @@
 gst_value_set_int_range
 gst_value_get_int_range_min
 gst_value_get_int_range_max
+gst_value_set_int_range_step
+gst_value_get_int_range_step
+
+<SUBSECTION bitmask>
+GST_VALUE_HOLDS_BITMASK
+GST_TYPE_BITMASK
+gst_value_set_bitmask
+gst_value_get_bitmask
 
 <SUBSECTION int64range>
 GST_VALUE_HOLDS_INT64_RANGE
@@ -2776,6 +2890,8 @@
 gst_value_set_int64_range
 gst_value_get_int64_range_min
 gst_value_get_int64_range_max
+gst_value_set_int64_range_step
+gst_value_get_int64_range_step
 
 <SUBSECTION doublerange>
 GST_VALUE_HOLDS_DOUBLE_RANGE
@@ -2832,6 +2948,12 @@
 gst_value_set_buffer
 gst_value_take_buffer
 
+<SUBSECTION sample>
+GST_VALUE_HOLDS_SAMPLE
+gst_value_get_sample
+gst_value_set_sample
+gst_value_take_sample
+
 <SUBSECTION>
 GST_VALUE_LESS_THAN
 GST_VALUE_EQUAL
@@ -2856,6 +2978,7 @@
 gst_value_can_subtract
 gst_value_intersect
 gst_value_can_intersect
+gst_value_is_subset
 gst_value_array_append_value
 gst_value_array_get_size
 gst_value_array_get_value
@@ -2873,6 +2996,7 @@
 gst_int64_range_get_type
 gst_value_array_get_type
 gst_value_list_get_type
+gst_bitmask_get_type
 </SECTION>
 
 <SECTION>
diff --git a/gst/gstbuffer.h b/gst/gstbuffer.h
index 28c6284..107cef6 100644
--- a/gst/gstbuffer.h
+++ b/gst/gstbuffer.h
@@ -488,7 +488,7 @@
 #include <gst/gstmeta.h>
 
 /**
- * GstBufferMetaFunc:
+ * GstBufferForeachMetaFunc:
  * @buffer: a #GstBuffer
  * @meta: a pointer to a #GstMeta
  * @user_data: user data passed to gst_buffer_foreach_meta()
diff --git a/gst/gstbufferlist.c b/gst/gstbufferlist.c
index 0594811..f3e047e 100644
--- a/gst/gstbufferlist.c
+++ b/gst/gstbufferlist.c
@@ -280,6 +280,15 @@
   }
 }
 
+/**
+ * gst_buffer_list_remove:
+ * @list: a #GstBufferList
+ * @idx: the index
+ * @length: the amount to remove
+ *
+ * Remove @length buffers starting from @idx in @list. The following buffers are
+ * moved to close the gap.
+ */
 void
 gst_buffer_list_remove (GstBufferList * list, guint idx, guint length)
 {
diff --git a/gst/gstclock.c b/gst/gstclock.c
index aca376a..fe789d7 100644
--- a/gst/gstclock.c
+++ b/gst/gstclock.c
@@ -1437,16 +1437,44 @@
   }
 }
 
+/**
+ * gst_clock_set_timeout:
+ * @clock: a #GstClock
+ * @timeout: a timeout
+ *
+ * Set the amount of time, in nanoseconds, to sample master and slave
+ * clocks
+ */
 void
 gst_clock_set_timeout (GstClock * clock, GstClockTime timeout)
 {
+  g_return_if_fail (GST_IS_CLOCK (clock));
+
+  GST_CLOCK_SLAVE_LOCK (clock);
   clock->priv->timeout = timeout;
+  GST_CLOCK_SLAVE_UNLOCK (clock);
 }
 
+/**
+ * gst_clock_get_timeout:
+ * @clock: a #GstClock
+ *
+ * Get the amount of time that master and slave clocks are sampled.
+ *
+ * Returns: the interval between samples.
+ */
 GstClockTime
 gst_clock_get_timeout (GstClock * clock)
 {
-  return clock->priv->timeout;
+  GstClockTime result;
+
+  g_return_val_if_fail (GST_IS_CLOCK (clock), GST_CLOCK_TIME_NONE);
+
+  GST_CLOCK_SLAVE_LOCK (clock);
+  result = clock->priv->timeout;
+  GST_CLOCK_SLAVE_UNLOCK (clock);
+
+  return result;
 }
 
 static void
@@ -1476,9 +1504,7 @@
       GST_CLOCK_SLAVE_UNLOCK (clock);
       break;
     case PROP_TIMEOUT:
-      GST_CLOCK_SLAVE_LOCK (clock);
-      priv->timeout = g_value_get_uint64 (value);
-      GST_CLOCK_SLAVE_UNLOCK (clock);
+      gst_clock_set_timeout (clock, g_value_get_uint64 (value));
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -1508,9 +1534,7 @@
       GST_CLOCK_SLAVE_UNLOCK (clock);
       break;
     case PROP_TIMEOUT:
-      GST_CLOCK_SLAVE_LOCK (clock);
-      g_value_set_uint64 (value, priv->timeout);
-      GST_CLOCK_SLAVE_UNLOCK (clock);
+      g_value_set_uint64 (value, gst_clock_get_timeout (clock));
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
diff --git a/gst/gstelementfactory.c b/gst/gstelementfactory.c
index 1cf9039..b11abfc 100644
--- a/gst/gstelementfactory.c
+++ b/gst/gstelementfactory.c
@@ -492,6 +492,16 @@
   return factory->type;
 }
 
+/**
+ * gst_element_factory_get_metadata:
+ * @factory,: a #GstElementFactory
+ * @key: a key
+ *
+ * Get the metadata on @factory with @key.
+ *
+ * Returns: the metadata with @key on @factory or %NULL when there was no
+ * metadata with the given @key.
+ */
 const gchar *
 gst_element_factory_get_metadata (GstElementFactory * factory,
     const gchar * key)
diff --git a/gst/gstevent.c b/gst/gstevent.c
index 5bcf5c0..a0b97f8 100644
--- a/gst/gstevent.c
+++ b/gst/gstevent.c
@@ -592,6 +592,7 @@
 
 /**
  * gst_event_parse_gap:
+ * @event: a #GstEvent of type #GST_EVENT_GAP
  * @timestamp: (out) (allow-none): location where to store the
  *     start time (pts) of the gap, or %NULL
  * @duration: (out) (allow-none): location where to store the duration of
@@ -738,7 +739,7 @@
 }
 
 /**
- * gst_event_set_stream_config_setup_data:
+ * gst_event_parse_stream_config_setup_data:
  * @event: a stream config event
  * @buf: (out) (transfer none): location where to store the #GstBuffer with setup data
  *
diff --git a/gst/gstevent.h b/gst/gstevent.h
index 19931c9..3a9d3f3 100644
--- a/gst/gstevent.h
+++ b/gst/gstevent.h
@@ -62,7 +62,6 @@
 /**
  * GST_EVENT_MAKE_TYPE:
  * @num: the event number to create
- * @idx: the index in the sticky array
  * @flags: the event flags
  *
  * when making custom event types, use this macro with the num and
diff --git a/gst/gstiterator.c b/gst/gstiterator.c
index 99369df..a8f34fb 100644
--- a/gst/gstiterator.c
+++ b/gst/gstiterator.c
@@ -73,6 +73,14 @@
 #include "gst_private.h"
 #include <gst/gstiterator.h>
 
+/**
+ * gst_iterator_copy:
+ * @it: a #GstIterator
+ *
+ * Copy the iterator and its state.
+ *
+ * Returns: a new copy of @it.
+ */
 GstIterator *
 gst_iterator_copy (const GstIterator * it)
 {
diff --git a/gst/gstmemory.c b/gst/gstmemory.c
index c5dde36..5a7f289 100644
--- a/gst/gstmemory.c
+++ b/gst/gstmemory.c
@@ -38,7 +38,8 @@
  *
  * New allocators can be registered with gst_allocator_register().
  * Allocators are identified by name and can be retrieved with
- * gst_allocator_find().
+ * gst_allocator_find(). gst_allocator_set_default() can be used to change the
+ * default allocator.
  *
  * New memory can be created with gst_memory_new_wrapped() that wraps the memory
  * allocated elsewhere.
@@ -60,7 +61,7 @@
  *
  * Memory can be efficiently merged when gst_memory_is_span() returns TRUE.
  *
- * Last reviewed on 2011-06-08 (0.11.0)
+ * Last reviewed on 2012-03-28 (0.11.3)
  */
 
 #ifdef HAVE_CONFIG_H
@@ -86,12 +87,6 @@
     (GBoxedCopyFunc) gst_allocation_params_copy,
     (GBoxedFreeFunc) gst_allocation_params_free);
 
-/**
- * gst_memory_alignment:
- *
- * The default memory alignment in bytes - 1
- * an alignment of 7 would be the same as what malloc() guarantees.
- */
 #if defined(MEMORY_ALIGNMENT_MALLOC)
 size_t gst_memory_alignment = 7;
 #elif defined(MEMORY_ALIGNMENT_PAGESIZE)
@@ -815,7 +810,7 @@
 }
 
 /**
- * gst_allocator_register:
+ * gst_allocator_new:
  * @info: a #GstMemoryInfo
  * @user_data: user data
  * @notify: a #GDestroyNotify for @user_data
@@ -865,7 +860,7 @@
 }
 
 /**
- * gst_alocator_get_memory_type:
+ * gst_allocator_get_memory_type:
  * @allocator: a #GstAllocator
  *
  * Get the memory type allocated by this allocator
@@ -881,7 +876,7 @@
 }
 
 /**
- * gst_alocator_ref:
+ * gst_allocator_ref:
  * @allocator: a #GstAllocator
  *
  * Increases the refcount of @allocator.
@@ -893,7 +888,7 @@
 {
   g_return_val_if_fail (allocator != NULL, NULL);
 
-  GST_CAT_TRACE (GST_CAT_MEMORY, "alocator %p, %d->%d", allocator,
+  GST_CAT_TRACE (GST_CAT_MEMORY, "allocator %p, %d->%d", allocator,
       allocator->refcount, allocator->refcount + 1);
 
   g_atomic_int_inc (&allocator->refcount);
diff --git a/gst/gstmemory.h b/gst/gstmemory.h
index 219831f..c69ee59 100644
--- a/gst/gstmemory.h
+++ b/gst/gstmemory.h
@@ -43,6 +43,12 @@
 typedef struct _GstAllocator GstAllocator;
 typedef struct _GstAllocationParams GstAllocationParams;
 
+/**
+ * gst_memory_alignment:
+ *
+ * The default memory alignment in bytes - 1
+ * an alignment of 7 would be the same as what malloc() guarantees.
+ */
 GST_EXPORT gsize gst_memory_alignment;
 
 #define GST_MEMORY_CAST(mem)   ((GstMemory *)(mem))
@@ -181,6 +187,11 @@
   gpointer user_data[4];
 } GstMapInfo;
 
+/**
+ * GST_MAP_INFO_INIT:
+ *
+ * Initializer for #GstMapInfo
+ */
 #define GST_MAP_INFO_INIT { NULL, 0, NULL, 0, 0, }
 
 /**
@@ -345,6 +356,13 @@
   gpointer _gst_reserved[GST_PADDING];
 };
 
+/**
+ * GstAllocator:
+ *
+ * An opaque type returned from gst_allocator_new() or gst_allocator_find()
+ * that can be used to allocator memory.
+ */
+
 /* allocators */
 GstAllocator * gst_allocator_new             (const GstMemoryInfo * info,
                                               gpointer user_data, GDestroyNotify notify);
diff --git a/gst/gstmessage.c b/gst/gstmessage.c
index a0390b7..7db7570 100644
--- a/gst/gstmessage.c
+++ b/gst/gstmessage.c
@@ -32,7 +32,7 @@
  *
  * Messages are posted by objects in the pipeline and are passed to the
  * application using the #GstBus.
-
+ *
  * The basic use pattern of posting a message on a #GstBus is as follows:
  *
  * <example>
diff --git a/gst/gstmeta.c b/gst/gstmeta.c
index 6f3cdcb..8f4a543 100644
--- a/gst/gstmeta.c
+++ b/gst/gstmeta.c
@@ -23,7 +23,27 @@
  * SECTION:gstmeta
  * @short_description: Buffer metadata
  *
- * Last reviewed on December 17th, 2009 (0.10.26)
+ * The #GstMeta structure should be included as the first member of a #GstBuffer
+ * metadata structure. The structure defines the API of the metadata and should
+ * be accessible to all elements using the metadata.
+ *
+ * A metadata API is registered with gst_meta_api_type_register() which takes a
+ * name for the metadata API and some tags associated with the metadata.
+ * With gst_meta_api_type_has_tag() one can check if a certain metadata API
+ * contains a given tag.
+ *
+ * Multiple implementations of a metadata API can be registered.
+ * To implement a metadata API, gst_meta_register() should be used. This
+ * function takes all parameters needed to create, free and transform metadata
+ * along with the size of the metadata. The function returns a #GstMetaInfo
+ * structure that contains the information for the implementation of the API.
+ *
+ * A specific implementation can be retrieved by name with gst_meta_get_info().
+ *
+ * See #GstBuffer for how the metadata can be added, retrieved and removed from
+ * buffers.
+ *
+ * Last reviewed on 2012-03-28 (0.11.3)
  */
 #include "gst_private.h"
 
diff --git a/gst/gstmeta.h b/gst/gstmeta.h
index 3a92cfe..bd7b2e2 100644
--- a/gst/gstmeta.h
+++ b/gst/gstmeta.h
@@ -119,6 +119,12 @@
  */
 GST_EXPORT GQuark _gst_meta_transform_copy;
 
+/**
+ * GST_META_TRANSFORM_IS_COPY:
+ * @type: a transform type
+ *
+ * Check if the transform type is a copy transform
+ */
 #define GST_META_TRANSFORM_IS_COPY(type) ((type) == _gst_meta_transform_copy)
 
 /**
diff --git a/gst/gstminiobject.c b/gst/gstminiobject.c
index 0d0e324..55d846b 100644
--- a/gst/gstminiobject.c
+++ b/gst/gstminiobject.c
@@ -22,12 +22,25 @@
  * SECTION:gstminiobject
  * @short_description: Lightweight base class for the GStreamer object hierarchy
  *
- * #GstMiniObject is a baseclass like #GObject, but has been stripped down of
- * features to be fast and small.
- * It offers sub-classing and ref-counting in the same way as #GObject does.
- * It has no properties and no signal-support though.
+ * #GstMiniObject is a simple structure that can be used to implement refcounted
+ * types.
  *
- * Last reviewed on 2005-11-23 (0.9.5)
+ * Subclasses will include #GstMiniObject as the first member in their structure
+ * and then call gst_mini_object_init() to initialize the #GstMiniObject fields.
+ *
+ * gst_mini_object_ref() and gst_mini_object_unref() increment and decrement the
+ * refcount respectively. When the refcount of a mini-object reaches 0, the
+ * dispose function is called first and when this returns %TRUE, the free
+ * function of the miniobject is called.
+ *
+ * A copy can be made with gst_mini_object_copy().
+ *
+ * gst_mini_object_is_writable() will return %TRUE when the refcount of the
+ * object is exactly 1, meaning the current caller has the only reference to the
+ * object. gst_mini_object_make_writable() will return a writable version of the
+ * object, which might be a new copy when the refcount was not 1.
+ *
+ * Last reviewed on 2012-03-28 (0.11.3)
  */
 #ifdef HAVE_CONFIG_H
 #include "config.h"
diff --git a/gst/gstminiobject.h b/gst/gstminiobject.h
index cc67f85..6984308 100644
--- a/gst/gstminiobject.h
+++ b/gst/gstminiobject.h
@@ -84,10 +84,10 @@
     GstMiniObject * where_the_mini_object_was);
 
 /**
- * GST_MINI_OBJECT_FLAGS:
- * @obj: MiniObject to return flags for.
+ * GST_MINI_OBJECT_TYPE:
+ * @obj: MiniObject to return type for.
  *
- * This macro returns the entire set of flags for the mini-object.
+ * This macro returns the type of the mini-object.
  */
 #define GST_MINI_OBJECT_TYPE(obj)  (GST_MINI_OBJECT_CAST(obj)->type)
 /**
@@ -217,6 +217,13 @@
 gboolean        gst_mini_object_take            (GstMiniObject **olddata, GstMiniObject *newdata);
 GstMiniObject * gst_mini_object_steal           (GstMiniObject **olddata);
 
+/**
+ * GST_DEFINE_MINI_OBJECT_TYPE:
+ * @TypeName: name of the new type in CamelCase
+ * @type_name: name of the new type
+ *
+ * Define a new mini-object type with the given name
+ */
 #define GST_DEFINE_MINI_OBJECT_TYPE(TypeName,type_name) \
    G_DEFINE_BOXED_TYPE(TypeName,type_name,              \
        (GBoxedCopyFunc) gst_mini_object_ref,            \
diff --git a/gst/gstobject.c b/gst/gstobject.c
index f8f6fba..e01e8df 100644
--- a/gst/gstobject.c
+++ b/gst/gstobject.c
@@ -27,54 +27,16 @@
  *
  * #GstObject provides a root for the object hierarchy tree filed in by the
  * GStreamer library.  It is currently a thin wrapper on top of
- * #GObject. It is an abstract class that is not very usable on its own.
+ * #GInitiallyUnowned. It is an abstract class that is not very usable on its own.
  *
  * #GstObject gives us basic refcounting, parenting functionality and locking.
  * Most of the function are just extended for special GStreamer needs and can be
  * found under the same name in the base class of #GstObject which is #GObject
  * (e.g. g_object_ref() becomes gst_object_ref()).
  *
- * The most interesting difference between #GstObject and #GObject is the
- * "floating" reference count. A #GObject is created with a reference count of
- * 1, owned by the creator of the #GObject. (The owner of a reference is the
- * code section that has the right to call gst_object_unref() in order to
- * remove that reference.) A #GstObject is created with a reference count of 1
- * also, but it isn't owned by anyone; Instead, the initial reference count
- * of a #GstObject is "floating". The floating reference can be removed by
- * anyone at any time, by calling gst_object_sink().  gst_object_sink() does
- * nothing if an object is already sunk (has no floating reference).
- *
- * When you add a #GstElement to its parent container, the parent container will
- * do this:
- * <informalexample>
- * <programlisting>
- *   gst_object_ref (GST_OBJECT (child_element));
- *   gst_object_sink (GST_OBJECT (child_element));
- * </programlisting>
- * </informalexample>
- * This means that the container now owns a reference to the child element
- * (since it called gst_object_ref()), and the child element has no floating
- * reference.
- *
- * The purpose of the floating reference is to keep the child element alive
- * until you add it to a parent container, which then manages the lifetime of
- * the object itself:
- * <informalexample>
- * <programlisting>
- *    element = gst_element_factory_make (factoryname, name);
- *    // element has one floating reference to keep it alive
- *    gst_bin_add (GST_BIN (bin), element);
- *    // element has one non-floating reference owned by the container
- * </programlisting>
- * </informalexample>
- *
- * Another effect of this is, that calling gst_object_unref() on a bin object,
- * will also destoy all the #GstElement objects in it. The same is true for
- * calling gst_bin_remove().
- *
- * Special care has to be taken for all methods that gst_object_sink() an object
- * since if the caller of those functions had a floating reference to the object,
- * the object reference is now invalid.
+ * Since #GstObject dereives from #GInitiallyUnowned, it also inherits the
+ * floating reference. Be aware that functions such as gst_bin_add() and
+ * gst_element_add_pad() take ownership of the floating reference.
  *
  * In contrast to #GObject instances, #GstObject adds a name property. The functions
  * gst_object_set_name() and gst_object_get_name() are used to set/get the name
@@ -131,7 +93,7 @@
  * </para>
  * </refsect2>
  *
- * Last reviewed on 2005-11-09 (0.9.4)
+ * Last reviewed on 2012-03-29 (0.11.3)
  */
 
 #include "gst_private.h"
diff --git a/gst/gstpad.c b/gst/gstpad.c
index 4fe7a1d..0464209 100644
--- a/gst/gstpad.c
+++ b/gst/gstpad.c
@@ -23,41 +23,69 @@
  * SECTION:gstpad
  * @short_description: Object contained by elements that allows links to
  *                     other elements
- * @see_also: #GstPadTemplate, #GstElement, #GstEvent
+ * @see_also: #GstPadTemplate, #GstElement, #GstEvent, #GstQuery, #GstBuffer
  *
  * A #GstElement is linked to other elements via "pads", which are extremely
  * light-weight generic link points.
- * After two pads are retrieved from an element with gst_element_get_pad(),
- * the pads can be link with gst_pad_link(). (For quick links,
- * you can also use gst_element_link(), which will make the obvious
- * link for you if it's straightforward.)
+ *
+ * Pads have a #GstPadDirection, source pads produce data, sink pads consume
+ * data.
  *
  * Pads are typically created from a #GstPadTemplate with
- * gst_pad_new_from_template().
- *
- * Pads have #GstCaps attached to it to describe the media type they are
- * capable of dealing with.  gst_pad_query_caps() and gst_pad_set_caps() are
- * used to manipulate the caps of the pads.
- * Pads created from a pad template cannot set capabilities that are
- * incompatible with the pad template capabilities.
+ * gst_pad_new_from_template() and are then added to a #GstElement. This usually
+ * happens when the element is created but it can also happen dynamically based
+ * on the data that the element is processing or based on the pads that the
+ * application requests.
  *
  * Pads without pad templates can be created with gst_pad_new(),
  * which takes a direction and a name as an argument.  If the name is NULL,
  * then a guaranteed unique name will be assigned to it.
  *
+ * A #GstElement creating a pad will typically use the various
+ * gst_pad_set_*_function() calls to register callbacks for events, queries or
+ * dataflow on the pads.
+ *
  * gst_pad_get_parent() will retrieve the #GstElement that owns the pad.
  *
- * A #GstElement creating a pad will typically use the various
- * gst_pad_set_*_function() calls to register callbacks for various events
- * on the pads.
+ * After two pads are retrieved from an element with gst_element_get_pad(),
+ * the pads can be linked with gst_pad_link(). (For quick links,
+ * you can also use gst_element_link(), which will make the obvious
+ * link for you if it's straightforward.). Pads can be unlinked again with
+ * gst_pad_unlink(). gst_pad_get_peer() can be used to check what the pad is
+ * linked to.
+ *
+ * Before dataflow is possible on the pads, they need to be activated with
+ * gst_pad_set_active().
+ *
+ * gst_pad_query() and gst_pad_peer_query() can be used to query various
+ * properties of the pad and the stream.
+ *
+ * To send a #GstEvent on a pad, use gst_pad_send_event() and
+ * gst_pad_push_event(). Some events will be sticky on the pad, meaning that
+ * after they pass on the pad they can be queried later with
+ * gst_pad_get_sticky_event() and gst_pad_sticky_events_foreach().
+ * gst_pad_get_current_caps() and gst_pad_has_current_caps() are convenience
+ * functions to query the current sticky CAPS event on a pad.
  *
  * GstElements will use gst_pad_push() and gst_pad_pull_range() to push out
  * or pull in a buffer.
  *
- * To send a #GstEvent on a pad, use gst_pad_send_event() and
- * gst_pad_push_event().
+ * The dataflow, events and queries that happen on a pad can be monitored with
+ * probes that can be installed with gst_pad_add_probe(). gst_pad_is_blocked()
+ * can be used to check if a block probe is installed on the pad.
+ * gst_pad_is_blocking() checks if the blocking probe is currently blocking the
+ * pad. gst_pad_remove_probe() is used to remove a previously installed probe
+ * and unblock blocking probes if any.
  *
- * Last reviewed on 2006-07-06 (0.10.9)
+ * Pad have an offset that can be retrieved with gst_pad_get_offset(). This
+ * offset will be applied to the running_time of all data passing over the pad.
+ * gst_pad_set_offset() can be used to change the offset.
+ *
+ * Convenience functions exist to start, pause and stop the task on a pad with
+ * gst_pad_start_task(), gst_pad_pause_task() and gst_pad_stop_task()
+ * respectively.
+ *
+ * Last reviewed on 2012-03-29 (0.11.3)
  */
 
 #include "gst_private.h"
diff --git a/gst/gstpad.h b/gst/gstpad.h
index 2181323..df66794 100644
--- a/gst/gstpad.h
+++ b/gst/gstpad.h
@@ -29,6 +29,7 @@
 typedef struct _GstPad GstPad;
 typedef struct _GstPadPrivate GstPadPrivate;
 typedef struct _GstPadClass GstPadClass;
+typedef struct _GstPadProbeInfo GstPadProbeInfo;
 
 /**
  * GstPadDirection:
@@ -527,7 +528,7 @@
  *
  * Info passed in the #GstPadProbeCallback.
  */
-typedef struct
+struct _GstPadProbeInfo
 {
   GstPadProbeType type;
   gulong id;
@@ -535,8 +536,9 @@
   guint64 offset;
   guint size;
 
+  /*< private >*/
   gpointer _gst_reserved[GST_PADDING];
-} GstPadProbeInfo;
+};
 
 #define GST_PAD_PROBE_INFO_TYPE(d)         ((d)->type)
 #define GST_PAD_PROBE_INFO_ID(d)           ((d)->id)
diff --git a/gst/gstpadtemplate.c b/gst/gstpadtemplate.c
index ab516a9..a8f1716 100644
--- a/gst/gstpadtemplate.c
+++ b/gst/gstpadtemplate.c
@@ -63,7 +63,7 @@
  *     GST_PAD_SINK,    // the direction of the pad
  *     GST_PAD_ALWAYS,  // when this pad will be present
  *     GST_STATIC_CAPS (        // the capabilities of the padtemplate
- *       "audio/x-raw-int, "
+ *       "audio/x-raw, "
  *         "channels = (int) [ 1, 6 ]"
  *     )
  *   );
diff --git a/gst/gstpipeline.c b/gst/gstpipeline.c
index 4f98433..38eb09d 100644
--- a/gst/gstpipeline.c
+++ b/gst/gstpipeline.c
@@ -29,8 +29,7 @@
  * A #GstPipeline is a special #GstBin used as the toplevel container for
  * the filter graph. The #GstPipeline will manage the selection and
  * distribution of a global #GstClock as well as provide a #GstBus to the
- * application. It will also implement a default behaviour for managing
- * seek events (see gst_element_seek()).
+ * application.
  *
  * gst_pipeline_new() is used to create a pipeline. when you are done with
  * the pipeline, use gst_object_unref() to free its resources including all
@@ -73,12 +72,7 @@
  * in the PLAYING state. This default behaviour can be changed with the
  * gst_element_set_start_time() method.
  *
- * When sending a flushing seek event to a GstPipeline (see
- * gst_element_seek()), it will make sure that the pipeline is properly
- * PAUSED and resumed as well as set the new running time to 0 when the
- * seek succeeded.
- *
- * Last reviewed on 2009-05-29 (0.10.24)
+ * Last reviewed on 2012-03-29 (0.11.3)
  */
 
 #include "gst_private.h"
diff --git a/gst/gstquery.c b/gst/gstquery.c
index b337738..cda44a9 100644
--- a/gst/gstquery.c
+++ b/gst/gstquery.c
@@ -23,12 +23,10 @@
 
 /**
  * SECTION:gstquery
- * @short_description: Dynamically register new query types. Provide functions
- *                     to create queries, and to set and parse values in them.
+ * @short_description: Provide functions to create queries, and to set and parse
+ *                     values in them.
  * @see_also: #GstPad, #GstElement
  *
- * GstQuery functions are used to register new query types to the gstreamer
- * core and use them.
  * Queries can be performed on pads (gst_pad_query()) and elements
  * (gst_element_query()). Please note that some queries might need a running
  * pipeline to work.
@@ -58,14 +56,10 @@
  *  </programlisting>
  * </example>
  *
- * Last reviewed on 2006-02-14 (0.10.4)
+ * Last reviewed on 2012-03-29 (0.11.3)
  */
 
 
-/* FIXME 0.11: suppress warnings for deprecated API such as GValueArray
- * with newer GLib versions (>= 2.31.0) */
-#define GLIB_DISABLE_DEPRECATION_WARNINGS
-
 #include "gst_private.h"
 #include "gstinfo.h"
 #include "gstquery.h"
@@ -1594,6 +1588,7 @@
 /**
  * gst_query_parse_nth_allocation_pool:
  * @query: A valid #GstQuery of type GST_QUERY_ALLOCATION.
+ * @index: index to parse
  * @pool: (out) (allow-none) (transfer none): the #GstBufferPool
  * @size: (out) (allow-none): the size
  * @min_buffers: (out) (allow-none): the min buffers
diff --git a/gst/gstquery.h b/gst/gstquery.h
index 707b544..81c3e6e 100644
--- a/gst/gstquery.h
+++ b/gst/gstquery.h
@@ -68,7 +68,6 @@
 /**
  * GST_QUERY_MAKE_TYPE:
  * @num: the query number to create
- * @idx: the index in the sticky array
  * @flags: the query flags
  *
  * when making custom query types, use this macro with the num and
diff --git a/gst/gstregistry.c b/gst/gstregistry.c
index 360ae50..59653d0 100644
--- a/gst/gstregistry.c
+++ b/gst/gstregistry.c
@@ -32,13 +32,7 @@
  *
  * The #GstRegistry object is a list of plugins and some functions for dealing
  * with them. Each #GstPlugin is matched 1-1 with a file on disk, and may or may
- * not be loaded at a given time. There may be multiple #GstRegistry objects,
- * but the "default registry" is the only object that has any meaning to the
- * core.
- *
- * The registry file is actually a cache of plugin information. This is
- * unlike versions prior to 0.10, where the registry file was the primary source
- * of plugin information, and was created by the gst-register command.
+ * not be loaded at a given time.
  *
  * The primary source, at all times, of plugin information is each plugin file
  * itself. Thus, if an application wants information about a particular plugin,
@@ -99,11 +93,13 @@
  *
  * <emphasis role="bold">Implementation notes:</emphasis>
  *
- * The "cache" and "default registry" are different concepts and can represent
+ * The "cache" and "registry" are different concepts and can represent
  * different sets of plugins. For various reasons, at init time, the cache is
  * stored in the default registry, and plugins not relevant to the current
  * process are marked with the %GST_PLUGIN_FLAG_CACHED bit. These plugins are
  * removed at the end of initialization.
+ *
+ * Last reviewed on 2012-03-29 (0.11.3)
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/gst/gstsample.c b/gst/gstsample.c
index 4c5681f..4a7551b 100644
--- a/gst/gstsample.c
+++ b/gst/gstsample.c
@@ -26,15 +26,13 @@
  *
  * A #GstSample is a small object containing data, a type, timing and
  * extra arbitrary information.
+ *
+ * Last reviewed on 2012-03-29 (0.11.3)
  */
 #include "gst_private.h"
 
 #include "gstsample.h"
 
-/**
- * GstSample:
- *
- */
 struct _GstSample
 {
   GstMiniObject mini_object;
diff --git a/gst/gstsegment.c b/gst/gstsegment.c
index a3b57b8..0e5cc17 100644
--- a/gst/gstsegment.c
+++ b/gst/gstsegment.c
@@ -58,30 +58,30 @@
  * normally be left to their default 0 value. The stop position is left to -1 unless
  * explicitly configured to a different value after a seek event.
  *
- * The current position in the segment should be set with the gst_segment_set_last_stop().
- * The public last_stop field contains the last set stop position in the segment.
+ * The current position in the segment should be set by changing the position
+ * member in the structure.
  *
  * For elements that perform seeks, the current segment should be updated with the
- * gst_segment_set_seek() and the values from the seek event. This method will update
- * all the segment fields. The last_stop field will contain the new playback position.
+ * gst_segment_do_seek() and the values from the seek event. This method will update
+ * all the segment fields. The position field will contain the new playback position.
  * If the cur_type was different from GST_SEEK_TYPE_NONE, playback continues from
- * the last_stop position, possibly with updated flags or rate.
+ * the position position, possibly with updated flags or rate.
  *
- * For elements that want to use #GstSegment to track the playback region, use
- * gst_segment_set_newsegment() to update the segment fields with the information from
- * the newsegment event. The gst_segment_clip() method can be used to check and clip
+ * For elements that want to use #GstSegment to track the playback region,
+ * update the segment fields with the information from the newsegment event.
+ * The gst_segment_clip() method can be used to check and clip
  * the media data to the segment boundaries.
  *
  * For elements that want to synchronize to the pipeline clock, gst_segment_to_running_time()
  * can be used to convert a timestamp to a value that can be used to synchronize
- * to the clock. This function takes into account all accumulated segments as well as
+ * to the clock. This function takes into account the base as well as
  * any rate or applied_rate conversions.
  *
  * For elements that need to perform operations on media data in stream_time,
  * gst_segment_to_stream_time() can be used to convert a timestamp and the segment
  * info to stream time (which is always between 0 and the duration of the stream).
  *
- * Last reviewed on 2007-05-17 (0.10.13)
+ * Last reviewed on 2012-03-29 (0.11.3)
  */
 
 /**
@@ -107,6 +107,13 @@
   return result;
 }
 
+/**
+ * gst_segment_copy_into:
+ * @src: (transfer none): a #GstSegment
+ * @dest: (transfer none): a #GstSegment
+ *
+ * Copy the contents of @src into @dest.
+ */
 void
 gst_segment_copy_into (const GstSegment * src, GstSegment * dest)
 {
diff --git a/gst/gststructure.c b/gst/gststructure.c
index d778e99..8065b31 100644
--- a/gst/gststructure.c
+++ b/gst/gststructure.c
@@ -28,13 +28,14 @@
  * as GQuarks and the values can be of any GType.
  *
  * In addition to the key/value pairs, a #GstStructure also has a name. The name
- * starts with a letter and can be folled by letters, numbers and any of "/-_.:".
+ * starts with a letter and can be filled by letters, numbers and any of "/-_.:".
  *
  * #GstStructure is used by various GStreamer subsystems to store information
  * in a flexible and extensible way. A #GstStructure does not have a refcount
- * because it usually is part of a higher level object such as #GstCaps. It
- * provides a means to enforce mutability using the refcount of the parent
- * with the gst_structure_set_parent_refcount() method.
+ * because it usually is part of a higher level object such as #GstCaps,
+ * #GstMessage, #GstEvent, #GstQuery. It provides a means to enforce mutability
+ * using the refcount of the parent with the gst_structure_set_parent_refcount()
+ * method.
  *
  * A #GstStructure can be created with gst_structure_new_empty() or
  * gst_structure_new(), which both take a name and an optional set of
@@ -52,7 +53,7 @@
  * Strings in structures must be ASCII or UTF-8 encoded. Other encodings are
  * not allowed. Strings must not be empty either, but may be NULL.
  *
- * Last reviewed on 2009-06-08 (0.10.23)
+ * Last reviewed on 2012-03-29 (0.11.3)
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/gst/gsttask.c b/gst/gsttask.c
index 4e32f72..2730904 100644
--- a/gst/gsttask.c
+++ b/gst/gsttask.c
@@ -54,18 +54,18 @@
  * stopped and the thread is stopped.
  *
  * After creating a #GstTask, use gst_object_unref() to free its resources. This can
- * only be done it the task is not running anymore.
+ * only be done when the task is not running anymore.
  *
  * Task functions can send a #GstMessage to send out-of-band data to the
  * application. The application can receive messages from the #GstBus in its
  * mainloop.
  *
- * For debugging perposes, the task will configure its object name as the thread
+ * For debugging purposes, the task will configure its object name as the thread
  * name on Linux. Please note that the object name should be configured before the
  * task is started; changing the object name after the task has been started, has
  * no effect on the thread name.
  *
- * Last reviewed on 2010-03-15 (0.10.29)
+ * Last reviewed on 2012-03-29 (0.11.3)
  */
 
 #include "gst_private.h"
diff --git a/gst/gsttrace.c b/gst/gsttrace.c
index b29a980..a6e4d95 100644
--- a/gst/gsttrace.c
+++ b/gst/gsttrace.c
@@ -20,31 +20,6 @@
  * Boston, MA 02111-1307, USA.
  */
 
-/**
- * SECTION:gsttrace
- * @short_description: Tracing functionality
- *
- * Traces allows to track object allocation. They provide a instance counter per
- * #GType. The counter is incremented for each object allocated and decremented
- * it when it's freed.
- *
- * <example>
- * <title>Tracing object instances</title>
- *   <programlisting>
- *     // trace un-freed object instances
- *     gst_alloc_trace_set_flags_all (GST_ALLOC_TRACE_LIVE);
- *     if (!gst_alloc_trace_available ()) {
- *       g_warning ("Trace not available (recompile with trace enabled).");
- *     }
- *     gst_alloc_trace_print_live ();
- *     // do something here
- *     gst_alloc_trace_print_live ();
- *   </programlisting>
- * </example>
- *
- * Last reviewed on 2005-11-21 (0.9.5)
- */
-
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
diff --git a/gst/gsturi.c b/gst/gsturi.c
index fe3f372..75c3440 100644
--- a/gst/gsturi.c
+++ b/gst/gsturi.c
@@ -25,7 +25,7 @@
  * SECTION:gsturihandler
  * @short_description: Interface to ease URI handling in plugins.
  *
- * The URIHandler is an interface that is implemented by Source and Sink 
+ * The URIHandler is an interface that is implemented by Source and Sink
  * #GstElement to simplify then handling of URI.
  *
  * An application can use the following functions to quickly get an element
diff --git a/gst/gstvalue.c b/gst/gstvalue.c
index e88c6f3..9910265 100644
--- a/gst/gstvalue.c
+++ b/gst/gstvalue.c
@@ -2861,6 +2861,15 @@
   return TRUE;
 }
 
+/**
+ * gst_value_is_subset:
+ * @value1: a #GValue
+ * @value2: a #GValue
+ *
+ * Check that @value1 is a subset of @value2.
+ *
+ * Return: %TRUE is @value1 is a subset of @value2
+ */
 gboolean
 gst_value_is_subset (const GValue * value1, const GValue * value2)
 {
