]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - glsdk/gstreamer0-10.git/blobdiff - docs/design/part-TODO.txt
docs/design/: Update some docs.
[glsdk/gstreamer0-10.git] / docs / design / part-TODO.txt
index af73ca13b0333938ad865d2aad5d42742e476dd6..903f7c0b587fc1f64bc7d8aac77a1d481ffb8fe7 100644 (file)
@@ -1,21 +1,70 @@
+API/ABI
+-------
 
-- changing an object's name after construction is not allowed. Checks are performed
-  when adding objects to parents that no duplicate names are used, changing the name
-  to a duplicate name after adding it is therefore allowed and voids internal
-  consistency.
+- implement return values from events in addition to the gboolean. This should
+  be done by making the event contain a GstStructure with input/output values,
+  similar to GstQuery. A typical use case is performing a non-accurate seek to a
+  keyframe, after the seek you want to get the new stream time that will
+  actually be used to update the slider bar.
 
-- only emit EOS in PLAYING. Make sure elements reemit the EOS message when going to
-  PLAYING again.
+- make gst_pad_push_event() return a GstFlowReturn so that we can resend
+  NEWSEGMENT and other events.
 
-- implement return values from events in addition to the gboolean. This should be
-  done by making the event contain a GstStructure with input/output values, similar
-  to GstMessage.
+- GstEvent, GstMessage register like GstFormat or GstQuery.
 
-- implement iterators for traversing elements upstream or dowstream.
+- query POSITION/DURATION return accuracy. Just a flag or accuracy percentage.
+
+- add some sort of time/frame stepping functionality, either with a flag on
+  the seek event or some new seek event type. The idea would be to operate on
+  the current playback position instead of the current configured segment when
+  doing the seek.
+  Idea is that frame stepping forwards can be done in the sinks, ie, just
+  dropping N frames/time, sending more complicated queries upstream which can
+  ideally handle those cases more efficiently too.
+
+- use | instead of + as divider in serialization of Flags
+  (gstvalue/gststructure)
+
+- rethink how we handle dynamic replugging wrt segments and other events that
+  already got pushed and need to be pushed again.
+
+- keep track of seeks with a counter so that we can match seek events received
+  in the demuxer srcpads. This is needed because a normal seek on a pipeline
+  will send the seek event on all sinks, which results in the demuxer receiving
+  the seek twice. If there is no way to see that the seek is the same, it will
+  perform the seek twice.
+  It would also be nice to have this same sequence number in the segment event
+  that resulted from the seek so that everything seek related can be tracked
+  properly.
+
+- When an element goes to PAUSED there is no way to figure out the running time
+  when this happened. One could think that we can store this time in the
+  base_time field of the element but that causes problems when the element is
+  still using the base_time before really PAUSING. We seem to need a new element
+  field for this. The running time when an element is paused can be usefull to
+  clip late buffers instead of prerolling on them.
+
+- Elements in a bin have no clue about the final state of the parent element
+  since the bin sets the target state on its children in small steps. This
+  causes problems for elements that like to know the final state (rtspsrc going
+  to PAUSED or READY is different in that we can avoid sending the useless
+  PAUSED request).
+
+
+IMPLEMENTATION
+--------------
+
+- implement more QOS, see part-qos.txt.
+
+- implement BUFFERSIZE.
+
+- implement pad_block with probes.
+
+
+DESIGN
+------
 
 - unlinking pads in the PAUSED state needs to make sure the stream thread is not
   executing code. Can this be done with a flush to unlock all downstream chain
-  functions?
-
-- implement clock selection as explained in part-gstpipeline.txt
+  functions? Do we do this automatically or let the app handle this?