summaryrefslogtreecommitdiff
path: root/TODO
blob: c65aa570ec0d5f206880cc0a483aaf9f9bcfdfc6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
TODO:
-----

short term core API stability
-----------------------------

Changes that probably impact the API, carefull discussion (IRC) + design doc is required
before changes are accepted.

target release ! description
               !
  0.4.1        ! expose and API to query the supported seek formats/flags on
  (done)       ! pads, somthing like an extra arg to gst_pad_set_convert_function
               ! and gst_pad_set_event_function with some function to query the 
               ! flags and formats. more ideas in docs/random/wtay/query_events
	       !  (API: medium dificulty)
	       !
  0.4.1        ! add event for segment playback/looping and seeking (docs/random/wtay/segments)
  (done)       !  (API: medium dificulty, plugins: HARD to very HARD)
	       !
    ?          ! add event to adjust rate (reverse playback, slow motion, frame skipping)
               ! (docs/random/wtay/rate_event)
    	       !  (API: medium dificulty, plugins: HARD to very HARD)
	       ! 
    ?	       ! add method in the scheduler to set the entry point (frame stepping?)
	       ! (docs/random/wtay/scheduler_entry)
    	       !  (API: moderatly EASY, scheduler implementation MEDIUM)
	       !
   0.6.0       ! create a design doc for a timecache implementation, 
   (done)      ! (docs/wtay/random/timecache)
    	       !  (API: MEDIUM, needs lots of discussion, plugin implementation MEDIUM to HARD)
	       ! (done: implemented using GstIndex base class + subclasses)
	       !
    ?	       ! implement a QoS event and a policy for handling the event.
               !  (API: kindof EASY, plugins MEDIUM to very HARD)
	       !
   0.4.1       ! implement user defined GstFormat values, make a format factory etc..
   (done)      !  (API: MEDIUM, plugins MEDIUM)
	       !
    ?	       ! strip the API to a bare bones minimal set of functions, leave the automatic
               ! stuff to the app instead of forcing a policy in the core.
	       ! create a library with usefull higher level function for people who don't want
	       ! to deal with the lowlevel stuff.
	       ! (HARD, need to negotiate with people :))
	       !
    ?	       ! use GMarkup to load/save objects, remove dependency on libxml2
               ! (MEDIUM) breaks API/ABI compatibility
	       !
	       

shortterm core feature enhancements
-----------------------------------

   0.4.1       ! Implement PAD_DISABLED. This requires simple checks in the scheduler so that
               ! it doesn't try to pull/push data from/to a disabled pad.
	       ! When an element goes to the PAUSED state, all of its pads should be disabled. 
	       ! This should also work for ghostpads.
               !  (API: MEDIUM to moderatly HARD, requires some scheduler understanding)


short term usability
--------------------

Writing docs is NOT boring, you learn a lot, you get insight in stuff, you help a lot
of people, hey! you might even find YOUR book on a shelf in a bookstore!!


    ?          ! plugin writers guide
               ! (we have almost nothing, so any start is welcomed)
	       ! (MEDIUM)
               !
    ?          ! app writers guide needs to cover common tips and tricks and HOWTOs
               ! (MEDIUM)
 

short to midterm policy definition
----------------------------------

Policy definition is closely related to a HOWTO but sometimes needs some thinking.


    ?          ! document thread safety guidelines, what stuff needs locking in the app, what
               ! is done in the core.
	       ! most of this stuff is in the heads of various people but needs to be written
	       ! down so that people get more insights into the design and vision of GStreamer.
	       ! (MEDIUM, some research and discussion needed)
	       !
    ?	       ! a step by step guide to the implementation of various events in a plugin, what can you
	       ! do, when is data passing forbidden etc..
	       ! (MEDIUM, some research needed)
	       ! 
    ?	       ! figure out a policy for the NEW_MEDIA event
	       ! (MEDIUM to HARD)
	       !
    ?          ! figure out how to better handle clock resync
	       ! (MEDIUM to HARD)
	       !
            

midterm feature enhancement
---------------------------
   
  0.6.0        | Define and implement a syntax in gst_parse to handle filtered pad connections.
  (done)       | (MEDIUM)
	       |
    ?          | Figure out a way to set properties on schedulers (and bins?) from gst_parse.
               | (MEDIUM)
	       |
    ?          | Make gst-inspect do inspection of plugins, schedulers, autopluggers, types.
               | An idea would be to make -inspect output an XML representation of the objects
	       | and use XSLT to transform this into text, HTML, docbook, ...
               | (MEDIUM to EASY)
	       |


midterm (longterm) optimisations
--------------------------------

These optimisations can be done without changing the existing API.


 (in progress) ! implement an optimal scheduler that uses chaining when possible
               ! (HARD, requires detailed knowledge of element scheduling)
	       !
    ?	       ! alternatively optimisations to the current scheduler can be done such
	       ! as: do nothing when the pipeline structure (or chain) has not changed
	       ! (MEDIUM)
	       !
    ?	       ! GstQueue is a little mess. implement a better queue (lockfree?), refactor
               ! queueing policy (max buffer, max time, levels etc..)
	       ! (MEDIUM to farily EASY)


longterm feature enhancements
-----------------------------

Various features that are not critical yet.

    ?          ! factory aliases. map a generic name like "videosink" to and actual
               ! user configurable plugin (aasink, sdlsink, xvideosink, ...)
	       ! (MEDIUM)
	       !
    ?          ! property proxy in compount elements. not sure if it's possible at all.
               ! what with elements with the same property?
	       ! (MEDIUM, needs some thinking)
               !
    ?          ! Make _pad_select work for muxers
               ! (MEDIUM to HARD)


needs consensus
---------------

Some stuff that needs to be figured out based on a pro/con comparison.

    ?          ! can we decide on the fact that downstream events are traveling using the
               ! scheduler? do we need to reevaluate that design decision?
	       ! (MEDIUM, needs pros vs cons document)


benchmarks
----------

Benchmarks are always good to get acceptance in a wider comunity or to identify performance 
problems that need fixing.

    ?          ! do a latency comparison with popular other frameworks, document GStreamer
               ! overhead.
	       ! (MEDIUM to somewhat EASY)
	       !