source: trunk/third/gstreamer/TODO @ 21005

Revision 21005, 6.5 KB checked in by ghudson, 20 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r21004, 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   0.6.0       ! create a design doc for a timecache implementation,
30   (done)      ! (docs/wtay/random/timecache)
31               !  (API: MEDIUM, needs lots of discussion, plugin implementation MEDIUM to HARD)
32               ! (done: implemented using GstIndex base class + subclasses)
33               !
34    ?          ! implement a QoS event and a policy for handling the event.
35               !  (API: kindof EASY, plugins MEDIUM to very HARD)
36               !
37   0.4.1       ! implement user defined GstFormat values, make a format factory etc..
38   (done)      !  (API: MEDIUM, plugins MEDIUM)
39               !
40    ?          ! strip the API to a bare bones minimal set of functions, leave the automatic
41               ! stuff to the app instead of forcing a policy in the core.
42               ! create a library with usefull higher level function for people who don't want
43               ! to deal with the lowlevel stuff.
44               ! (HARD, need to negotiate with people :))
45               !
46    ?          ! use GMarkup to load/save objects, remove dependency on libxml2
47               ! (MEDIUM) breaks API/ABI compatibility
48               !
49               
50
51shortterm core feature enhancements
52-----------------------------------
53
54   0.4.1       ! Implement PAD_DISABLED. This requires simple checks in the scheduler so that
55               ! it doesn't try to pull/push data from/to a disabled pad.
56               ! When an element goes to the PAUSED state, all of its pads should be disabled.
57               ! This should also work for ghostpads.
58               !  (API: MEDIUM to moderatly HARD, requires some scheduler understanding)
59
60
61short term usability
62--------------------
63
64Writing docs is NOT boring, you learn a lot, you get insight in stuff, you help a lot
65of people, hey! you might even find YOUR book on a shelf in a bookstore!!
66
67
68    ?          ! plugin writers guide
69               ! (we have almost nothing, so any start is welcomed)
70               ! (MEDIUM)
71               !
72    ?          ! app writers guide needs to cover common tips and tricks and HOWTOs
73               ! (MEDIUM)
74 
75
76short to midterm policy definition
77----------------------------------
78
79Policy definition is closely related to a HOWTO but sometimes needs some thinking.
80
81
82    ?          ! document thread safety guidelines, what stuff needs locking in the app, what
83               ! is done in the core.
84               ! most of this stuff is in the heads of various people but needs to be written
85               ! down so that people get more insights into the design and vision of GStreamer.
86               ! (MEDIUM, some research and discussion needed)
87               !
88    ?          ! a step by step guide to the implementation of various events in a plugin, what can you
89               ! do, when is data passing forbidden etc..
90               ! (MEDIUM, some research needed)
91               !
92    ?          ! figure out a policy for the NEW_MEDIA event
93               ! (MEDIUM to HARD)
94               !
95    ?          ! figure out how to better handle clock resync
96               ! (MEDIUM to HARD)
97               !
98           
99
100midterm feature enhancement
101---------------------------
102   
103  0.6.0        | Define and implement a syntax in gst_parse to handle filtered pad connections.
104  (done)       | (MEDIUM)
105               |
106    ?          | Figure out a way to set properties on schedulers (and bins?) from gst_parse.
107               | (MEDIUM)
108               |
109    ?          | Make gst-inspect do inspection of plugins, schedulers, autopluggers, types.
110               | An idea would be to make -inspect output an XML representation of the objects
111               | and use XSLT to transform this into text, HTML, docbook, ...
112               | (MEDIUM to EASY)
113               |
114
115
116midterm (longterm) optimisations
117--------------------------------
118
119These optimisations can be done without changing the existing API.
120
121
122 (in progress) ! implement an optimal scheduler that uses chaining when possible
123               ! (HARD, requires detailed knowledge of element scheduling)
124               !
125    ?          ! alternatively optimisations to the current scheduler can be done such
126               ! as: do nothing when the pipeline structure (or chain) has not changed
127               ! (MEDIUM)
128               !
129    ?          ! GstQueue is a little mess. implement a better queue (lockfree?), refactor
130               ! queueing policy (max buffer, max time, levels etc..)
131               ! (MEDIUM to farily EASY)
132
133
134longterm feature enhancements
135-----------------------------
136
137Various features that are not critical yet.
138
139    ?          ! factory aliases. map a generic name like "videosink" to and actual
140               ! user configurable plugin (aasink, sdlsink, xvideosink, ...)
141               ! (MEDIUM)
142               !
143    ?          ! property proxy in compount elements. not sure if it's possible at all.
144               ! what with elements with the same property?
145               ! (MEDIUM, needs some thinking)
146               !
147    ?          ! Make _pad_select work for muxers
148               ! (MEDIUM to HARD)
149
150
151needs consensus
152---------------
153
154Some stuff that needs to be figured out based on a pro/con comparison.
155
156    ?          ! can we decide on the fact that downstream events are traveling using the
157               ! scheduler? do we need to reevaluate that design decision?
158               ! (MEDIUM, needs pros vs cons document)
159
160
161benchmarks
162----------
163
164Benchmarks are always good to get acceptance in a wider comunity or to identify performance
165problems that need fixing.
166
167    ?          ! do a latency comparison with popular other frameworks, document GStreamer
168               ! overhead.
169               ! (MEDIUM to somewhat EASY)
170               !
Note: See TracBrowser for help on using the repository browser.