Update theme submodule
[platform/upstream/gstreamer.git] / manual-porting-1.0.md
1 ---
2 title: Porting 0.10 applications to 1.0
3 ...
4
5 # Porting 0.10 applications to 1.0
6
7 This section outlines some of the changes necessary to port applications
8 from GStreamer-0.10 to GStreamer-1.0. For a comprehensive and up-to-date
9 list, see the separate [Porting
10 to 1.0](http://cgit.freedesktop.org/gstreamer/gstreamer/plain/docs/random/porting-to-1.0.txt)
11 document.
12
13 It should be possible to port simple applications to GStreamer-1.0 in
14 less than a day.
15
16 ## List of changes
17
18   - All deprecated methods were removed. Recompile against 0.10 with
19     GST\_DISABLE\_DEPRECATED defined (such as by adding
20     -DGST\_DISABLE\_DEPRECATED to the compiler flags) and fix issues
21     before attempting to port to 1.0.
22
23   - "playbin2" has been renamed to "playbin", with similar API
24
25   - "decodebin2" has been renamed to "decodebin", with similar API. Note
26     that there is no longer a "new-decoded-pad" signal, just use
27     GstElement's "pad-added" signal instead (but don't forget to remove
28     the 'gboolean last' argument from your old signal callback functino
29     signature).
30
31   - the names of some "formatted" pad templates has been changed from
32     e.g. "src%d" to "src%u" or "src\_%u" or similar, since we don't want
33     to see negative numbers in pad names. This mostly affects
34     applications that create request pads from elements.
35
36   - some elements that used to have a single dynamic source pad have a
37     source pad now. Example: wavparse, id3demux, iceydemux, apedemux.
38     (This does not affect applications using decodebin or playbin).
39
40   - playbin now proxies the GstVideoOverlay (former GstXOverlay)
41     interface, so most applications can just remove the sync bus handler
42     where they would set the window ID, and instead just set the window
43     ID on playbin from the application thread before starting playback.
44     
45     playbin also proxies the GstColorBalance and GstNavigation
46     interfaces, so applications that use this don't need to go fishing
47     for elements that may implement those any more, but can just use on
48     playbin unconditionally.
49
50   - multifdsink, tcpclientsink, tcpclientsrc, tcpserversrc the protocol
51     property is removed, use gdppay and gdpdepay.
52
53   - XML serialization was removed.
54
55   - Probes and pad blocking was merged into new pad probes.
56
57   - Position, duration and convert functions no longer use an inout
58     parameter for the destination format.
59
60   - Video and audio caps were simplified. audio/x-raw-int and
61     audio/x-raw-float are now all under the audio/x-raw media type.
62     Similarly, video/x-raw-rgb and video/x-raw-yuv are now video/x-raw.
63
64   - ffmpegcolorspace was removed and replaced with videoconvert.
65
66   - GstMixerInterface / GstTunerInterface were removed without
67     replacement.
68
69   - The GstXOverlay interface was renamed to GstVideoOverlay, and now
70     part of the video library in gst-plugins-base, as the interfaces
71     library no longer exists.
72     
73     The name of the GstXOverlay "prepare-xwindow-id" message has changed
74     to "prepare-window-handle" (and GstXOverlay has been renamed to
75     GstVideoOverlay). Code that checks for the string directly should be
76     changed to use
77     gst\_is\_video\_overlay\_prepare\_window\_handle\_message(message)
78     instead.
79
80   - The GstPropertyProbe interface was removed. There is no replacement
81     for it in GStreamer 1.0.x and 1.2.x, but since version 1.4 there is
82     a more featureful replacement for device discovery and feature
83     querying provided by GstDeviceMonitor, GstDevice, and friends. See
84     the ["GStreamer Device Discovery and Device Probing"
85     documentation](http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-device-probing.html).
86
87   - gst\_uri\_handler\_get\_uri() and the get\_uri vfunc now return a
88     copy of the URI string
89     
90     gst\_uri\_handler\_set\_uri() and the set\_uri vfunc now take an
91     additional GError argument so the handler can notify the caller why
92     it didn't accept a particular URI.
93     
94     gst\_uri\_handler\_set\_uri() now checks if the protocol of the URI
95     passed is one of the protocols advertised by the uri handler, so
96     set\_uri vfunc implementations no longer need to check that as well.
97
98   - GstTagList is now an opaque mini object instead of being typedefed
99     to a GstStructure. While it was previously okay (and in some cases
100     required because of missing taglist API) to cast a GstTagList to a
101     GstStructure or use gst\_structure\_\* API on taglists, you can no
102     longer do that. Doing so will cause crashes.
103     
104     Also, tag lists are refcounted now, and can therefore not be freely
105     modified any longer. Make sure to call
106     gst\_tag\_list\_make\_writable (taglist) before adding, removing or
107     changing tags in the taglist.
108     
109     GST\_TAG\_IMAGE, GST\_TAG\_PREVIEW\_IMAGE, GST\_TAG\_ATTACHMENT:
110     many tags that used to be of type GstBuffer are now of type
111     GstSample (which is basically a struct containing a buffer alongside
112     caps and some other info).
113
114   - GstController has now been merged into GstObject. It does not exists
115     as an individual object anymore. In addition core contains a
116     GstControlSource base class and the GstControlBinding. The actual
117     control sources are in the controller library as before. The 2nd big
118     change is that control sources generate a sequence of gdouble values
119     and those are mapped to the property type and value range by
120     GstControlBindings.
121     
122     The whole gst\_controller\_\* API is gone and now available in
123     simplified form under gst\_object\_\*. ControlSources are now
124     attached via GstControlBinding to properties. There are no GValue
125     arguments used anymore when programming control sources.
126