gstreamer/docs/random/ds/0.9-suggested-changes

144 lines
5 KiB
Text
Raw Normal View History

API:
- MAKE A DOCUMENT THAT LISTS ALL API CHANGES AND HOW TO DEAL WITH THEM
- GstElementState should be a real enum, not something that looks like flags
changing state can be done with ++ and -- instead of >> and <<
- replace object/structure set/get macros with actual functions.
- events should all use GstStructure
- reorganize headers (split app headers vs plugin headers maybe)
while at it also make sure to only allow including of the main headers like
glib, so we can freely shuffle stuff around
- make GstPadLinkReturn internal (to either plugins+core or just core)
and return gboolean to apps.
- rewrite GstIndex (it's gross)
- gst_init() et al. need to work correctly when called multiple times
and from libraries, etc.
- gst_pad_get_pad_template_caps -> gst_pad_get_template_caps()
- make templates mandatory for pads.
- force pads to use a pad template from the element they belong to.
- s/PadTemplate/PadFactory/ to describe better what it is and be more in line
with the rest of the API?
- add ways for autopluggers to manage negotiation of their children.
This would allow autopluggers to no longer need helper identities.
(Though the main reason for identities atm is to be able to connect without
plugging - Company)
- remove float support from dparams
- dparams: should be converted into some kind of special pad and
object property combination.
- read/write locks on buffers
- be able to send events to unlinked pads (bug #114442)
- caps should have a flag on fields to indicate that the field is optional
- deprecate gst_buffer_merge() and replace with a function that takes
ownership of the buffers. (bug #136408)
- fakesrc handoff should be changed to return a GstData * or carry a
GstData **, wo the user can provide own buffers and events.
- remove GST_OBJECT_DESTROYED()
- fix plugin code to load plugins with RTLD_LOCAL
- don't install gstmarshal.h
- remove unnecessary headers from gst.h (gstqueue.h in particular)
- make sure GstClockTime is used wherever it should (e.g. gstplay)
- make gst_bin_get_list virtual so subclasses can override it (e.g.
gst-play which contains an internal thread not inside the bin that is
gstplay)
- make gst_bin_get_by_interface search on the list provided by this get_list
so that you can search a GstPlay for an element implementing the interface
(right now gstplay has added a gst_play_get_by_interface)
- make multichannel properties on audio caps manditory
- talk to vektor about various wierdness with NTSC video (combinations of
24 fps pulled down to 60 and straight video, etc) and make sure our
video stream descriptions make sense.
- remove GstMemChunk
- do an audit to remove GtkObject-isms from gtk-1.2
caps:
(Company:)
"An idea I had once was to force registration of mimetypes and then
only allow caps with a registered mimetype - like it's done now with caps.
You could then add functions to those registrations like
- gchar *get_human_readable_string (caps);
should be kinda selfexplanatory. Would return stuff like "16bit signed
integer audio", "MPEG2 video" or "video format in RGB colorspace" (for
unfixed RGB)
- GstCaps *default_fixate (const GstCaps *caps);
A default fixation function, so we don't fixate to minimum integer
anymore but have the ability to fixate to 320x240 for video or 44100 for
audio rates
- gboolean validate (const GstCaps *caps);
check if the given caps are ok for this mimetype - debugging only function
I'd _really_ like to have - especially during gst_register.
But that's 0.10 material."
(Thaytan)
- Add rowstride as a property so that video frames don't have to have
rowstride == width. For example, gdkpixbufdec would prefer to pad
rowstrides to multiples of 4 bytes.
negotiation:
- autopluggers would be easier to write if there was a core method
to do what plugidentities do.
- there should be a way to hook into negotiation and be able to do something if
negotiation fails. Autopluggers would need that for exchanging elements when
they can't link.
bugs with interesting info:
XML descriptions of plugin information:
http://bugzilla.gnome.org/show_bug.cgi?id=114216
object hierarchy:
- a method for elements to know when downstream elements are ignoring
the data stream. This would allow automatic shutoff of pipelines
whose processing is being dumped.
- object properties:
- all bitrates should be bits per second, since they're specified
as integers
- use device for nodes (not location; dvdreadsrc, dvdnavsrc, cdparanoia).
Also figure out if we want to continue separating uri/location.
- categorization of plugins:
- categories were intended from the start as a list of keywords, instead
of an implicit tree.
- this makes a lot more sense and probably fixes our constant discussion
about categorizing
- make this explicit by having a list of keywords instead of a fixed string
with slashes
- fix the editor/el browser to display this nicely