gstreamer/docs/random/ds/0.9-suggested-changes
Benjamin Otte 2bd5f3ad46 gst/gstpad.c: check that caps are fixed
Original commit message from CVS:
* gst/gstpad.c: (gst_pad_set_explicit_caps):
check that caps are fixed
* gst/gstpad.c: (gst_pad_template_new):
don't try to simplify caps, costs too much time on gst_init
* gst/gstplugin.c: (gst_plugin_add_feature):
G_ERROR if features are added twice
* gst/gsttypefind.c: (gst_type_find_register):
* gst/gstelementfactory.c: (gst_element_register):
don't add features twice
* docs/random/ds/0.9-suggested-changes:
add note about possible gst_init optimization
2004-07-29 15:29:37 +00:00

146 lines
4.9 KiB
Text

API:
- MAKE A DOCUMENT THAT LISTS ALL API CHANGES AND HOW TO DEAL WITH THEM
- 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()
- 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)
- 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.
- rename GST_TYPE_FIXED_LIST to GST_TYPE_ARRAY
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:
- 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
- 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
- optimization:
- delay parsing caps from the registry until after startup (until they're
first requested or maybe an idle handler for the main loop)