gst/gstpad.c: Remove handling of filtered caps. Fix/merge functions that handle...
[platform/upstream/gstreamer.git] / docs / random / ds / 0.9-suggested-changes
1
2
3 API:
4
5   - MAKE A DOCUMENT THAT LISTS ALL API CHANGES AND HOW TO DEAL WITH THEM
6
7  - GstElementState should be a real enum, not something that looks like flags
8    changing state can be done with ++ and -- instead of >> and <<
9
10  - replace object/structure set/get macros with actual functions.
11
12  - events should all use GstStructure
13
14  - reorganize headers (split app headers vs plugin headers maybe)
15    while at it also make sure to only allow including of the main headers like
16    glib, so we can freely shuffle stuff around
17
18  - make GstPadLinkReturn internal (to either plugins+core or just core)
19    and return gboolean to apps.
20
21  - rewrite GstIndex (it's gross)
22
23  - gst_init() et al. need to work correctly when called multiple times
24    and from libraries, etc.
25
26  - gst_pad_get_pad_template_caps -> gst_pad_get_template_caps()
27
28  - make templates mandatory for pads.
29  
30  - force pads to use a pad template from the element they belong to.
31
32  - s/PadTemplate/PadFactory/ to describe better what it is and be more in line
33    with the rest of the API?
34  
35  - add ways for autopluggers to manage negotiation of their children.
36    This would allow autopluggers to no longer need helper identities.
37    (Though the main reason for identities atm is to be able to connect without
38     plugging - Company)
39
40  - remove float support from dparams
41
42  - dparams: should be converted into some kind of special pad and
43    object property combination.
44
45  - remove gst_element_yield()
46
47  - read/write locks on buffers
48
49  - be able to send events to unlinked pads (bug #114442)
50
51  - caps should have a flag on fields to indicate that the field is optional
52
53  - remove gst_pad_select() and add gst_pad_pull_many(), which pulls one
54    buffer from one of many pads
55
56  - deprecate gst_buffer_merge() and replace with a function that takes
57    ownership of the buffers.  (bug #136408)
58
59  - fakesrc handoff should be changed to return a GstData * or carry a
60     GstData **, wo the user can provide own buffers and events.
61
62  - remove GST_OBJECT_DESTROYED()
63
64  - fix plugin code to load plugins with RTLD_LOCAL
65
66  - don't install gstmarshal.h
67
68  - make GstPad and friends a real class heirarchy
69
70  - make GstBuffer/GstData a real class heirarchy, although maybe not
71    as a subclass of GObject.
72
73  - remove unnecessary headers from gst.h (gstqueue.h in particular)
74
75  - make sure GstClockTime is used wherever it should (e.g. gstplay)
76
77  - make gst_bin_get_list virtual so subclasses can override it (e.g.
78    gst-play which contains an internal thread not inside the bin that is
79    gstplay)
80  - make gst_bin_get_by_interface search on the list provided by this get_list
81    so that you can search a GstPlay for an element implementing the interface
82    (right now gstplay has added a gst_play_get_by_interface)
83
84  - make multichannel properties on audio caps manditory
85
86  - talk to vektor about various wierdness with NTSC video (combinations of
87    24 fps pulled down to 60 and straight video, etc) and make sure our
88    video stream descriptions make sense.
89
90  - rename GST_TYPE_FIXED_LIST to GST_TYPE_ARRAY
91
92  - remove GstMemChunk
93
94  - remove GST_FORMATS_FUNCTION().  It doesn't work with non-c99 
95    compilers.
96
97  - do an audit to remove GtkObject-isms from gtk-1.2
98
99 caps:
100
101   (Company:)
102
103   "An idea I had once was to force registration of mimetypes and then
104   only allow caps with a registered mimetype - like it's done now with caps.
105   You could then add functions to those registrations like
106   - gchar *get_human_readable_string (caps);
107   should be kinda selfexplanatory. Would return stuff like "16bit signed
108   integer audio", "MPEG2 video" or "video format in RGB colorspace" (for
109   unfixed RGB)
110   - GstCaps *default_fixate (const GstCaps *caps);
111   A default fixation function, so we don't fixate to minimum integer
112   anymore but have the ability to fixate to 320x240 for video or 44100 for
113   audio rates
114   - gboolean validate (const GstCaps *caps);
115   check if the given caps are ok for this mimetype - debugging only function
116   I'd _really_ like to have - especially during gst_register.
117
118   But that's 0.10 material."
119
120   (Thaytan)
121   - Add rowstride as a property so that video frames don't have to have 
122     rowstride == width. For example, gdkpixbufdec would prefer to pad 
123     rowstrides to multiples of 4 bytes.
124
125 negotiation:
126
127 - autopluggers would be easier to write if there was a core method
128   to do what plugidentities do.
129
130 - there should be a way to hook into negotiation and be able to do something if 
131   negotiation fails. Autopluggers would need that for exchanging elements when
132   they can't link.
133
134 bugs with interesting info:
135  
136  XML descriptions of plugin information:
137    http://bugzilla.gnome.org/show_bug.cgi?id=114216
138   
139
140 object hierarchy:
141 - state_change in GstElementClass should be renamed to state_changed, since
142   it's a signal triggered after state has changed
143
144
145 - a method for elements to know when downstream elements are ignoring
146   the data stream.  This would allow automatic shutoff of pipelines
147   whose processing is being dumped.
148
149 - object properties:
150   - all bitrates should be bits per second, since they're specified
151     as integers
152   - use device for nodes (not location; dvdreadsrc, dvdnavsrc, cdparanoia).
153     Also figure out if we want to continue separating uri/location.
154
155 - categorization of plugins:
156   - categories were intended from the start as a list of keywords, instead
157     of an implicit tree.
158   - this makes a lot more sense and probably fixes our constant discussion
159     about categorizing
160   - make this explicit by having a list of keywords instead of a fixed string
161     with slashes
162   - fix the editor/el browser to display this nicely
163
164 - optimization:
165   - delay parsing caps from the registry until after startup (until they're 
166     first requested or maybe an idle handler for the main loop)
167