| TODO - Future Development |
| ------------------------- |
| |
| API/ABI |
| ~~~~~~~ |
| |
| - 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. |
| |
| - make gst_pad_push_event() return a GstFlowReturn |
| |
| - GstEvent, GstMessage register like GstFormat or GstQuery. |
| |
| - query POSITION/DURATION return accuracy. Just a flag or accuracy percentage. |
| |
| - 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. Might need GstFlowReturn from |
| gst_pad_push_event(). FIXED in 0.11 with sticky events. |
| |
| - Optimize negotiation. We currently do a get_caps() call when we link pads, |
| which could potentially generate a huge list of caps and all their |
| combinations, we need to avoid generating these huge lists by generating them |
| We also need to incrementally return intersections etc, for this. somewhat |
| incrementally when needed. We can do this with a gst_pad_iterate_caps() call. |
| We also need to incrementally return intersections etc, for this. |
| FIXED in 0.11 with a filter on getcaps functions. |
| |
| - 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). |
| |
| - Make serialisation of structures more consistent, readable and nicer code-wise. |
| |
| - pad block has several issues: |
| * can't block on selected things, like push, pull, pad_alloc, events, ... |
| * can't check why the block happened. We should also be able to get the item/ |
| reason that blocked the pad. |
| * it only blocks on datapassing. When EOS, the block never happens but ideally |
| should because pad block should inform the app when there is no dataflow. |
| * the same goes for segment seeks that don't push in-band EOS events. Maybe |
| segment seeks should also send an EOS event when they're done. |
| * blocking should only happen from one thread. If one thread does pad_alloc |
| and another a push, the push might be busy while the block callback is done. |
| * maybe this name is overloaded. We need to look at some more use cases before |
| trying to fix this. |
| FIXED in 0.11 with BLOCKING probes. |
| |
| - rethink the way we do upstream renegotiation. Currently it's done with |
| pad_alloc but this has many issues such as only being able to suggest 1 format |
| and the need to allocate a buffer of this suggested format (some elements such |
| as capsfilter only know about the format, not the size). We would ideally like |
| to let upstream renegotiate a new format just like it did when it started. |
| This could, for example, easily be triggered with a RENEGOTIATE event. |
| FIXED in 0.11 with RECONFIGURE events. |
| |
| - Remove the result format value in queries. FIXED in 0.11 |
| |
| - Try to minimize the amount of acceptcaps calls when pushing buffers around. |
| The element pushing the buffer usually negotiated already and decided on the |
| format. |
| The element receiving the buffer usually has to accept the caps anyway. |
| |
| |
| IMPLEMENTATION |
| ~~~~~~~~~~~~~~ |
| |
| - implement more QOS, see part-qos.txt. |
| |
| - implement BUFFERSIZE. |
| |
| |
| 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? Do we do this automatically or let the app handle this? |
| |