mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-16 21:36:35 +00:00
141 lines
4 KiB
Text
141 lines
4 KiB
Text
Plan for 0.11
|
|
=============
|
|
|
|
First attempt at making a list of tasks in roughly chronological order.
|
|
|
|
* General cleanup
|
|
|
|
- Remove deprecated methods
|
|
- Cleanup structs + PADDING
|
|
- ..
|
|
|
|
This should allow us to continue expanding later in the same way that 0.10 was
|
|
expanded.
|
|
|
|
|
|
* Review GstCaps fields
|
|
|
|
- go over caps fields for audio, video, compressed media-type etc
|
|
|
|
We need to express things with less fields. This would speed up caps, make
|
|
them less verbose and speed up some elements.
|
|
|
|
|
|
* Add GstFlowReturn for events (and query)
|
|
|
|
This would allow us to know more precisely what went wrong.
|
|
|
|
http://cgit.freedesktop.org/~wtay/gstreamer/log/?h=events2
|
|
|
|
|
|
* add return structure for events and query
|
|
|
|
Make events return more information. (a seek event might want to return the
|
|
final position of the keyframe seek and the accuracy of the seek)
|
|
|
|
Make bindings easiers. Currently the writability of a query depends on the
|
|
refcount being exactly 1. If the query is not writable, it simply cannot be
|
|
answered.
|
|
|
|
|
|
* Make GstMiniObject a simple boxed type
|
|
|
|
- Move copy and free function to structure
|
|
- convert GstBuffer, GstEvent, GstMessage, GstQuery,
|
|
|
|
We don't need to subclass miniobjects when we have arbitrary metadata.
|
|
|
|
Allocation should be more efficient and buffer/metadata/data can be allocated
|
|
and pooled in one contiguous memory area.
|
|
|
|
Typechecking of various types is much more efficient when there is only
|
|
one class.
|
|
|
|
http://cgit.freedesktop.org/~wtay/gstreamer/log/?h=miniobject2
|
|
|
|
|
|
* Convert GstCaps to GstMiniObject
|
|
|
|
Currently it has its own refcounting and flags.
|
|
|
|
http://cgit.freedesktop.org/~wtay/gstreamer/log/?h=miniobject2
|
|
|
|
|
|
* GVariant registry
|
|
|
|
- allow for mmaped registy (tpm)
|
|
|
|
* Incremental caps
|
|
|
|
- Remove array from caps ?
|
|
- make caps iterator or is the array the cache for iterator ?
|
|
|
|
We need to perform less caps operations when negotiating formats. One way is
|
|
to only handle small caps objects incrementally.
|
|
|
|
http://cgit.freedesktop.org/~ensonic/gstreamer/log/?h=lazycaps
|
|
|
|
|
|
* Make GstBufferMetadata
|
|
|
|
- Make functions to register metadata
|
|
- Make common metadata: timeinfo, memory data, video data
|
|
- Remove GstBuffer Fields
|
|
- Make methods to add metadata to buffers.
|
|
|
|
More flexible metadata for buffers.
|
|
|
|
http://cgit.freedesktop.org/~wtay/gstreamer/log/?h=buffermeta
|
|
|
|
|
|
* Negotiation of metadata
|
|
|
|
- figure out if we need to negotiate the metadata on the caps or if we can
|
|
gracefully degrade when an element doesn't understand the metadata.
|
|
|
|
We need to avoid that elements put metadata on buffers that is essential in
|
|
handling the buffer contents but that is then not understood by other
|
|
elements.
|
|
|
|
|
|
* Rework reverse negotiation
|
|
|
|
- upstream event to notify of a downstream caps change
|
|
- _alloc_buffer() takes input GstBuffer prototype (or NULL)
|
|
- _alloc_buffer() never returns changed caps.
|
|
|
|
One of the performance problems in 0.10 is that transform elements need to
|
|
call gst_pad_alloc_buffer() downstream to check if the caps changed. This
|
|
usually also results in a useless memory allocation.
|
|
|
|
We would make a new upstream event to notify downstream elements that new caps
|
|
are possible somewhere downstream.
|
|
|
|
gst_pad_alloc_buffer() would take a GstBuffer as an input argument to make the
|
|
API easier, we can then use metadata to specify additional contraints for the
|
|
new buffer (such as strides, etc)
|
|
|
|
|
|
* Incremental event progation
|
|
|
|
- certain events would be sticky on a pad like for caps
|
|
- rules for pushing an event downstream
|
|
- right before pushing a buffer
|
|
- after link operation
|
|
- activate for most serialized downstream events
|
|
|
|
This would allow an application to have more control over the state of the
|
|
dataflow in a pipeline.
|
|
|
|
|
|
* GstSegment changes
|
|
|
|
- remove segment accumulation
|
|
- add accumulated time to the event
|
|
- apply segment info to pads
|
|
- add method on pads to get/adjust sync offset
|
|
- add method on pads to query current running_time
|
|
|
|
The goal is to make the timing model more comprehensible and thus make dynamic
|
|
pipeline plugging easier.
|
|
|