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

108 lines
3.3 KiB
Text
Raw Normal View History

API:
- replace object/structure set/get macros with actual functions.
- events should all use GstStructure
- reorganize headers (split app headers vs plugin headers maybe)
- 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()
- add ways for autopluggers to manage negotiation of their children.
This would allow autopluggers to no longer need helper identities.
- remove float support from dparams
- dparams: should be converted into some kind of special pad and
object property combination.
- remove gst_element_yield()
- 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
- remove gst_pad_select() and add gst_pad_pull_many(), which pulls one
buffer from one of many pads
- 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
- make GstPad and friends a real class heirarchy
- make GstBuffer/GstData a real class heirarchy, although maybe not
as a subclass of GObject.
- remove unnecessary headers from gst.h (gstqueue.h in particular)
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."
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:
- state_change in GstElementClass should be renamed to state_changed, since
it's a signal triggered after state has changed
- 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