source: trunk/third/gstreamer/TODO @ 18714

Revision 18714, 6.2 KB checked in by ghudson, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18713, which included commits to RCS files with non-trunk default branches.
Line 
1TODO:
2-----
3
4short term core API stability
5-----------------------------
6
7Changes that probably impact the API, carefull discussion (IRC) + design doc is required
8before changes are accepted.
9
10target release ! description
11               !
12  0.4.1        ! expose and API to query the supported seek formats/flags on
13  (done)       ! pads, somthing like an extra arg to gst_pad_set_convert_function
14               ! and gst_pad_set_event_function with some function to query the
15               ! flags and formats. more ideas in docs/random/wtay/query_events
16               !  (API: medium dificulty)
17               !
18  0.4.1        ! add event for segment playback/looping and seeking (docs/random/wtay/segments)
19  (done)       !  (API: medium dificulty, plugins: HARD to very HARD)
20               !
21    ?          ! add event to adjust rate (reverse playback, slow motion, frame skipping)
22               ! (docs/random/wtay/rate_event)
23               !  (API: medium dificulty, plugins: HARD to very HARD)
24               !
25    ?          ! add method in the scheduler to set the entry point (frame stepping?)
26               ! (docs/random/wtay/scheduler_entry)
27               !  (API: moderatly EASY, scheduler implementation MEDIUM)
28               !
29    ?          ! create a design doc for a timecache implementation,
30               !  (docs/wtay/random/timecache)
31               !  (API: MEDIUM, needs lots of discussion, plugin implementation MEDIUM to HARD)
32               !
33    ?          ! implement a QoS event and a policy for handling the event.
34               !  (API: kindof EASY, plugins MEDIUM to very HARD)
35               !
36   0.4.1       ! implement user defined GstFormat values, make a format factory etc..
37   (done)      !  (API: MEDIUM, plugins MEDIUM)
38               !
39    ?          ! strip the API to a bare bones minimal set of functions, leave the automatic
40               ! stuff to the app instead of forcing a policy in the core.
41               ! create a library with usefull higher level function for people who don't want
42               ! to deal with the lowlevel stuff.
43               ! (HARD, need to negotiate with people :))
44               
45
46shortterm core feature enhancements
47-----------------------------------
48
49   0.4.1       ! Implement PAD_DISABLED. This requires simple checks in the scheduler so that
50               ! it doesn't try to pull/push data from/to a disabled pad.
51               ! When an element goes to the PAUSED state, all of its pads should be disabled.
52               ! This should also work for ghostpads.
53               !  (API: MEDIUM to moderatly HARD, requires some scheduler understanding)
54
55
56short term usability
57--------------------
58
59Writing docs is NOT boring, you learn a lot, you get insight in stuff, you help a lot
60of people, hey! you might even find YOUR book on a shelf in a bookstore!!
61
62
63    ?          ! plugin writers guide
64               ! (we have almost nothing, so any start is welcomed)
65               ! (MEDIUM)
66               !
67    ?          ! app writers guide needs to cover common tips and tricks and HOWTOs
68               ! (MEDIUM)
69 
70
71short to midterm policy definition
72----------------------------------
73
74Policy definition is closely related to a HOWTO but sometimes needs some thinking.
75
76
77    ?          ! document thread safety guidelines, what stuff needs locking in the app, what
78               ! is done in the core.
79               ! most of this stuff is in the heads of various people but needs to be written
80               ! down so that people get more insights into the design and vision of GStreamer.
81               ! (MEDIUM, some research and discussion needed)
82               !
83    ?          ! a step by step guide to the implementation of various events in a plugin, what can you
84               ! do, when is data passing forbidden etc..
85               ! (MEDIUM, some research needed)
86               !
87    ?          ! figure out a policy for the NEW_MEDIA event
88               ! (MEDIUM to HARD)
89
90midterm feature enhancement
91---------------------------
92   
93    ?          | Define and implement a syntax in gst_parse to handle filtered pad connections.
94               | (MEDIUM)
95               |
96    ?          | Figure out a way to set properties on schedulers (and bins?) from gst_parse.
97               | (MEDIUM)
98               |
99    ?          | Make gst-inspect do inspection of plugins, schedulers, autopluggers, types.
100               | An idea would be to make -inspect output an XML representation of the objects
101               | and use XSLT to transform this into text, HTML, docbook, ...
102               | (MEDIUM to EASY)
103               |
104
105
106midterm (longterm) optimisations
107--------------------------------
108
109These optimisations can be done without changing the existing API.
110
111
112 (in progress) ! implement an optimal scheduler that uses chaining when possible
113               ! (HARD, requires detailed knowledge of element scheduling)
114               !
115    ?          ! alternatively optimisations to the current scheduler can be done such
116               ! as: do nothing when the pipeline structure (or chain) has not changed
117               ! (MEDIUM)
118               !
119    ?          ! GstQueue is a little mess. implement a better queue (lockfree?), refactor
120               ! queueing policy (max buffer, max time, levels etc..)
121               ! (MEDIUM to farily EASY)
122
123
124longterm feature enhancements
125-----------------------------
126
127Various features that are not critical yet.
128
129    ?          ! factory aliases. map a generic name like "videosink" to and actual
130               ! user configurable plugin (aasink, sdlsink, xvideosink, ...)
131               ! (MEDIUM)
132               !
133    ?          ! property proxy in compount elements. not sure if it's possible at all.
134               ! what with elements with the same property?
135               ! (MEDIUM, needs some thinking)
136               !
137    ?          ! Make _pad_select work for muxers
138               ! (MEDIUM to HARD)
139
140
141needs consensus
142---------------
143
144Some stuff that needs to be figured out based on a pro/con comparison.
145
146    ?          ! can we decide on the fact that downstream events are traveling using the
147               ! scheduler? do we need to reevaluate that design decision?
148               ! (MEDIUM, needs pros vs cons document)
149
150
151benchmarks
152----------
153
154Benchmarks are always good to get acceptance in a wider comunity or to identify performance
155problems that need fixing.
156
157    ?          ! do a latency comparison with popular other frameworks, document GStreamer
158               ! overhead.
159               ! (MEDIUM to somewhat EASY)
160               !
Note: See TracBrowser for help on using the repository browser.