caps: remove gst_caps_union()
[platform/upstream/gstreamer.git] / docs / random / porting-to-0.11.txt
index 33dddaf..0181bcd 100644 (file)
@@ -60,6 +60,10 @@ The 0.11 porting guide
 
     gst_element_class_add_pad_template() takes ownership of the template
 
+    gst_element_class_add_static_pad_template (element_class, &src_template)
+      => gst_element_class_add_pad_template (element_class,
+             gst_static_pad_template_get (&src_template));
+
     Elements that change the duration must post DURATION messages on the
     bus when the duration changes in PAUSED or PLAYING.
 
@@ -72,7 +76,8 @@ The 0.11 porting guide
     push the tag event.
 
 * GstPad:
-    gst_pad_get_caps() does not return writable caps anymore and an explicit
+    gst_pad_get_caps() was replaced by gst_pad_query_caps(), it
+    does not return writable caps anymore and an explicit
     gst_caps_make_writable() needs to be performed. This was the functionality
     of gst_pad_get_caps_reffed(), which is removed now.
 
@@ -328,6 +333,23 @@ The 0.11 porting guide
 
     GST_VIDEO_CAPS_xxx -> GST_VIDEO_CAPS_MAKE(xxx)
 
+    Some caps functions now take ownership of the input argument, for
+    efficiency reasons (to avoid unnecessary copies to make them writable):
+
+      gst_caps_normalize (caps)          =>   caps = gst_caps_normalize (caps)
+      gst_caps_do_simplify (caps)        =>   caps = gst_caps_simplify (caps)
+      gst_caps_merge (caps,caps2)        =>   caps = gst_caps_merge (caps,caps2)
+      gst_caps_merge_structure (caps,st) =>   caps = gst_caps_merge_structure (caps,st)
+      gst_caps_truncate (caps)           =>   caps = gst_caps_truncate (caps)
+
+    The compiler should warn about unused return values from these functions,
+    which may help find the places that need to be updated.
+
+    Removed functions:
+
+      gst_caps_union() -> gst_caps_merge():  Be careful because _merge takes
+                 ownership of the arguments.
+
 * GstSegment
     abs_rate was removed from the public fields, it can be trivially calculated
     from the rate field.
@@ -425,16 +447,20 @@ The 0.11 porting guide
     gst_tag_list_new_full*() have been renamed to gst_tag_list_new*().
 
 * GstController:
-    has now been merged into GstObject. The control sources are in the 
-    controller library still.
+    has now been merged into GstObject. It does not exists as a individual
+    object anymore. In addition core contains a GstControlSource base class and
+    the GstControlBinding. The actual control sources are in the controller
+    library as before. The 2nd big change is that control sources generate
+    a sequence of gdouble values and those are mapped to the property type and
+    value range by GstControlBindings.
     
     For plugins the effect is that gst_controller_init() is gone and
     gst_object_sync_values() is taking a GstObject * instead of GObject *.
     
     For applications the effect is larger. The whole gst_controller_* API is
-    gone and now available in simplified form under gst_object_*. There is no
-    more GstController object. Attach a control source to a property to control
-    it and attach NULL to un-control it.
+    gone and now available in simplified form under gst_object_*. ControlSources
+    are now attached via GstControlBinding to properties. There are no GValue
+    arguments used anymore when programming control sources.
 
     gst_controller_new* -> gst_object_set_control_source
     gst_controller_add_properties -> gst_object_set_control_source
@@ -447,4 +473,36 @@ The 0.11 porting guide
     properties fetch the value array. Also GstValueArray is gone. The fields of
     GstValueArray are now passed directly to gst_object_get_value_array as
     arguments.
+    
+    GstInterpolationControlSource has been split. There is a new 
+    GstTimedValueControlSource baseclass and 2 sub classes: 
+    GstInterpolationControlSource and GstTriggerControlSource. The API for setting
+    and getting the timestamps is in GstTimedValueControlSource.
+    
+    gst_interpolation_control_source_set_interpolation_mode() has been removed.
+    Set the "mode" gobject property on the control-source instead. The possible
+    enum values have been renamed from GST_INTERPOLATE_XXX to
+    GST_INTERPOLATION_MODE_XXX.
+
+* GstRegistry
+
+    gst_registry_get_default() -> gst_registry_get()
+    gst_default_registry_*(...) -> gst_registry_*(gst_registry_get(), ...)
+
+* GstValue
+
+    GST_TYPE_DATE -> G_TYPE_DATE
+    GST_VALUE_HOLDS_DATE(value) -> G_VALUE_HOLDS(value,G_TYPE_DATE)
+    gst_value_set_date() -> g_value_set_boxed()
+    gst_value_get_date() -> g_value_get_boxed()
+
+* GError/GstGError
+
+    GstGError -> GError
+    GST_TYPE_G_ERROR / gst_g_error_get_type() -> G_TYPE_ERROR
+
+* "codec-data" and "streamheader" field in GstCaps
 
+    codec-data and stream headers are no longer in GstCaps, but sent as
+    part of a STREAM CONFIG event (which should be sent after the initial
+    CAPS event if needed).