4 First attempt at making a list of tasks in roughly chronological order.
8 - Remove deprecated methods
9 - Cleanup structs + PADDING
12 This should allow us to continue expanding later in the same way that 0.10 was
16 * Review GstCaps fields
18 - go over caps fields for audio, video, compressed media-type etc
20 We need to express things with less fields. This would speed up caps, make
21 them less verbose and speed up some elements.
24 * Add GstFlowReturn for events (and query)
26 This would allow us to know more precisely what went wrong.
28 http://cgit.freedesktop.org/~wtay/gstreamer/log/?h=events2
31 * add return structure for events and query
33 Make events return more information. (a seek event might want to return the
34 final position of the keyframe seek and the accuracy of the seek)
36 Make bindings easiers. Currently the writability of a query depends on the
37 refcount being exactly 1. If the query is not writable, it simply cannot be
41 * Make GstMiniObject a simple boxed type
43 - Move copy and free function to structure
44 - convert GstBuffer, GstEvent, GstMessage, GstQuery,
46 We don't need to subclass miniobjects when we have arbitrary metadata.
48 Allocation should be more efficient and buffer/metadata/data can be allocated
49 and pooled in one contiguous memory area.
51 Typechecking of various types is much more efficient when there is only
54 http://cgit.freedesktop.org/~wtay/gstreamer/log/?h=miniobject2
57 * Convert GstCaps to GstMiniObject
59 Currently it has its own refcounting and flags.
61 http://cgit.freedesktop.org/~wtay/gstreamer/log/?h=miniobject2
66 - allow for mmaped registy (tpm)
70 - Remove array from caps ?
71 - make caps iterator or is the array the cache for iterator ?
73 We need to perform less caps operations when negotiating formats. One way is
74 to only handle small caps objects incrementally.
76 http://cgit.freedesktop.org/~ensonic/gstreamer/log/?h=lazycaps
79 * Make GstBufferMetadata
81 - Make functions to register metadata
82 - Make common metadata: timeinfo, memory data, video data
83 - Remove GstBuffer Fields
84 - Make methods to add metadata to buffers.
86 More flexible metadata for buffers.
88 http://cgit.freedesktop.org/~wtay/gstreamer/log/?h=buffermeta
91 * Negotiation of metadata
93 - figure out if we need to negotiate the metadata on the caps or if we can
94 gracefully degrade when an element doesn't understand the metadata.
96 We need to avoid that elements put metadata on buffers that is essential in
97 handling the buffer contents but that is then not understood by other
101 * Rework reverse negotiation
103 - upstream event to notify of a downstream caps change
104 - _alloc_buffer() takes input GstBuffer prototype (or NULL)
105 - _alloc_buffer() never returns changed caps.
107 One of the performance problems in 0.10 is that transform elements need to
108 call gst_pad_alloc_buffer() downstream to check if the caps changed. This
109 usually also results in a useless memory allocation.
111 We would make a new upstream event to notify downstream elements that new caps
112 are possible somewhere downstream.
114 gst_pad_alloc_buffer() would take a GstBuffer as an input argument to make the
115 API easier, we can then use metadata to specify additional contraints for the
116 new buffer (such as strides, etc)
119 * Incremental event progation
121 - certain events would be sticky on a pad like for caps
122 - rules for pushing an event downstream
123 - right before pushing a buffer
124 - after link operation
125 - activate for most serialized downstream events
127 This would allow an application to have more control over the state of the
128 dataflow in a pipeline.
133 - remove segment accumulation
134 - add accumulated time to the event
135 - apply segment info to pads
136 - add method on pads to get/adjust sync offset
137 - add method on pads to query current running_time
139 The goal is to make the timing model more comprehensible and thus make dynamic
140 pipeline plugging easier.