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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
|
$Id: TODO 4755 2009-11-05 04:24:29Z matju $
0.9.6
[ ] go back in all help files and fill in whatever is missing
[ ] quicktime PNG encoding: does it work?
[ ] add missing to index.pd
[ ] about.pd: link from help menu; add link to website, mention irc, etc.
unsorted
[ ] [doc_cc] [doc_ii] [doc_oo]'s $1 doesn't really accept symbol now.
[ ] remove last outlet of [#] when it's irrelevant, and don't have a $2 in that case, and don't check type of r in that case.
[ ] can't handle [args] that come out as grid literals and have to become setter messages.
[ ] [pack] trigger_by (choose which inlets are hot)
[ ] GF objects don't have default methods like bang and list, unlike pd itself.
[ ] bug in line rendering causes one pixel to be off by one pixel at the end of many linesegments. ([#draw_polygon] with hpgl)
[ ] put_at is lacking some checks for number-of-dims, causing segfault.
[ ] strange problem with [#import] when input size doesn't match output size and object is recreated
[ ] get rid of doc/stuff.txt and doc/install.html
[ ] fix [nbx]<->[hsl] relationship in [#camera]
[ ] #line_to_polygon is buggy
[ ] #draw_polygon init_lines() not sufficiently called
[ ] conversion from float to int is inconsistent: when to round and when to trunc?
[ ] with pwc, 720x480 crashes
[ ] WILL NOT go through all the new [gf/...] to "clean things up" now; will not make help files of them right now either.
[ ] what to do with [#motion_detection] ?
[ ] [#saturation] is a linear colorspace transform: therefore it could be accelerated just like [#hueshift] could.
[ ] try [# C.sq-] on chroma
0.9.7
[ ] listflatten-help.pd : [display] bug
[ ] GridFlow Index dans toutes les fenêtres
[ ] <mescalinum> matju: anyway, in #-help.pd, object [doc/numop] is still error
[ ] [#reinterval] takes no argument
[ ] [#draw_rect] doesn't support op, etc... what do we do about attributes?
[ ] [doc_m] boxes are too big
[ ] [#make_arrow] (fix and help)
[ ] [#interval_overlap]
Later
[ ] [#in libv4l] and/or [#in unicap] and/or [#in videojack]
<matju> oof -> error: [#io.quicktime in gf_spirals_and_moire.avi]: unknown colorspace 'yuv' (supported: rgb, rgba, bgr, bgrn, yuv, yuva)
[ ] doc attributes: [doc_a] [doc_aa] ?
[ ] [doc_ii] links to [doc_cc]
[ ] regularise Grid[a,b] vs Grid Dim[a,b] vs Dim[a,b] vs a grid of size (a,b) or (a b)... big mess
[ ] distinguish messages vs atoms in this manual
e.g. [doc_aa] would contain something like [doc_m]
but wouldn't have [doc_m] as a subnode.
[ ] [print], [gf.print] bugs
[ ] [gf/canvas_loadbang]: is it buggy? (see [doc_h] double-bang problem)
[ ] probably a problem with loadbang: when making a new helppatch, it's better to save it and reload immediately,
to prevent a lot of redraw bugs.
[ ] support "get" in abstractions... automatically, through [args] ?
[ ] bugs/bugfixes from roman, claude, federico, etc
[ ] [fps]: translate into pd: "publish if fps>0.001" (to remove outliers)
[ ] reimplement negative indices in [listelement] and [listsublist]
[ ] fix SDL modifiers
[ ] fix quoting in [display]
[ ] [args] have to be connected to a [t a] in common with first inlet... (BUT: this has an impact on float vs list distinction)
(why not make this automatic, by making [args] contact whichever inlet is first?)
[ ] [#to_pix] newimage=0 to save CPU time and/or bus time?
[ ] what to do with GridFlow version numbering?
[ ] use [args] everywhere it should be used: e.g. [#background_model] but also many more
[ ] reintroduce set_mode(0)
[ ] [#fold] is slowwww
[ ] [route3] is like [route] but doesn't trim.
[ ] #out x11 doesn't accept 0-sized grids
[ ] #inner doesnt support seeds of size>1, and isn't vecop-compatible, and ...
[ ] #inner could optimise permutation matrices?
[ ] claude wants http://en.wikipedia.org/wiki/Graham_scan
[ ] make [#draw_points] [#edit_polygon]
[ ] distinguish between C++ types Grid* and GridFlow*
[ ] add [#out png]
[ ] Accumulation of Background Statistics
[ ] compenser pour les ajustements progressifs ou soudains de luminosité
[ ] regular dc1394 options
[ ] irregular dc1394 options: white_shading, white_balance; trigger_mode? trigger, trigger_delay
OpenCV
[ ] cvOpticalFlow
[ ] [cv.split]
[ ] cvEstimateRigidTransform
[ ] cvApproxPoly pour un seul poly à la fois
[ ] cvMeanShift, cvCamShift (?)
cvCamShift s'utilise presque comme MeanShift, sauf que ça requiert un autre type non-grid.
Celui-ci peut être représenté comme une grid de 5 éléments pour faire plus facile
(contrairement à cvHistogram, qui contient une grid ND mais a besoin de quelques fields de plus que ça).
[ ] cvCalcBackProject (?)
[ ] cvCalcHist, cvCreateHist.
[ ] SnakeImage (what is the concept of 'energy', squared luminosity?)
J'aurais supposé que oui, mais c'est juste trois mesures reliées à trois forces qui "shapent" la courbe:
espacement égal des points, réduction des angles, et correspondance avec l'image même (qui doit normalement
être un edge-detect d'une image plus vieille).
[ ] on doit aussi commencer à rajouter des types non-grid. Le premier sera CvHistogram et est requis pour tous les objets dont le nom contient "Hist".
Common Video Framework
[ ] a common library for all video IO (cameras, files, web), which is the project of Thomas H and Johannes.
[ ] a six-way converter for GEM/PDP/GridFlow. There are already converters between GEM and PDP and between GEM and GridFlow
but there is none between PDP and GridFlow and then some things could be easier to install and run in a cross-platform way.
[ ] a way to make GEM/PDP/GF conversions *implicitly* instead of having objects for that.
[ ] threads for video?
[ ] GEM geos vs 3DP: how do they compare?
[ ] is there anything else deserving to be unified between the video plugins?
[ ] look at camorama
[ ] Generic Image Library: http://opensource.adobe.com/gil/html/giltutorial.html
malloc alignment = 4 mod 8 (en utilisant valgrind)
ClaudiusMaximus matju: feature request: [#store4], behaves like store but accepts grids
of floats as coordinates and interpolate using 4-point interpolation, eg, right inlet ->
(3 3 f # 0 0 0 1 1 1 2 4 8), left inlet -> (1 # 0.5) outputs (0.5 0.5 0.5)
(or whatever the interpolation would really be), left inlet (2 # 1.5 1.5) outputs (3)
http://oprofile.sourceforge.net/about/
also: qprofile, amd profiler, opreport -cl --demangle=smart
[ ] OpenCL
[ ] look at the endian stuff that is most probably wrong... if I can run anything on a G4 or G5.
[ ] -ftree-vectorizer-verbose
[ ] try removing or modifying -falign on PPC/OSX
[ ] encoding of quicktime RGBA (PNG) does not work at all!
[ ] make example on separable convkernels
[ ] add concepts of hot inlet and conf inlet at the code level
[ ] [display] should use clocks to update tk less often
[ ] deprecation warnings
[ ] Add a video latency patch (in examples)
[ ] Numop: warn on misalignment
[ ] remove GridInlet* ?
[ ] configure chokes if GCC3 doesn't have the C++ plugin
[ ] [#import~] [#export~]
[ ] [#expr]
[ ] [#line]? [#pipe]? [#delay]?
[ ] rewrite [#rgb_to_rgba] [#rgba_to_rgb] in C++ if I'm not going to rework [#inner] soon enough.
[ ] #: option swap
[ ] consider including [mysql] [renamefile] [ls] [shell]
[ ] re-enable int64,float64
[ ] add #matrix_solve, #slice
[ ] Copy-on-Write (COW)
[ ] internal grid protocol redesigned
[ ] look into -ftree-vectorize
[ ] look at Tetra Piccolo capture cards, as well as ImpactVCB (Hauppauge)
[ ] some proper equivalent of [rubysprintf]... see also: [gf.error]
[ ] small leak remaining in x11? may have to do with non-use of XDestroyImage?
[ ] is [@convolve] actually cross-convolution? that is, convolves with a mirror image of the convolution matrix.
[ ] #import with zero size crashes?
[ ] numop ** can freeze GF
[ ] osx: [#store] crash instead of raising
[ ] MMX computations may be done misaligned, which may be bad.
[ ] when file not found, mpeg error messages are wrong, they say the filename is "".
[ ] osx: error: shmget failed (cannot allocate memory) in X11, for regular pictures
[ ] "unsupported codec" bogus errors.
[ ] format/mpeg3.c,quicktime.c might cause lockup on exit
[ ] some seeds aren't typechecked
[ ] GRID_FINISH triggered while backstore ???
[ ] what would be a way to make GF work well with Pd's idea of a list?
[ ] write unit tests about required functionality
[ ] write unit tests about error checking
[ ] make system to ensure everything is working before a release.
[ ] it's possible to crash by sending data in two inlets of a same object at once
Installation
[ ] cross-compile: http://www.libsdl.org/extras/win32/cross/ http://rooster.stanford.edu/~ben/linux/cross.php
Documentation
[ ] document how to report bugs, basic troubleshooting
[ ] document our distribution of the archives
[ ] ascii conventions: [foo] vs "foo", etc.
[ ] document internals
[ ] describe indexmap in doc
[ ] architecture: class->type/shape->use->role
[ ] benchmarks (especially: simple video i/o)
[ ] mimic [pdp_help_input] [pdp_help_output]: they are convenient
Architecture
[ ] reentrancy of objects (to allow true recursion)
[ ] inlet-attrs (attrs associated to inlets) (see "same as arg" in help)
[ ] eliminate the Dim class, replacing by Grid itself (?).
[ ] pull mode (functional-style)
[ ] bidirectional messages (constraint/relational-style)
[ ] send-reply messages (imperative-style)
[ ] add reflection (#global:classes, #global:methods, ...)
[ ] transmitting grids by diffs?
[ ] dispatch on _#{i}_-named methods (any selector one inlet)
[ ] generalize the backstore
[ ] Outlet#buffer should harmonise with the lcm of its corresponding Inlet#factor's.
[ ] lazy grids: Grid#operator T* makes sure all the grid is received
and Grid#range(int start, int n, T bogus) makes sure the
specified part of the grid is received.
[ ] accounting: grids messages packets numbers bytes copybytes
[ ] memory profiling
[ ] add a "query" class for debugging other objects? (would be able to extract extra info from each object/class)
[ ] add a GridFlow::LaterException or something (which tells to retry later with the same packet because another
grid reception is not completed yet.)
[ ] interpret nested lists as n-dimensional.
[ ] MMX memcpy() ?
[ ] MMX _runtime_ autodetection
[ ] find a good profiler to use with GridFlow.
Computation Objects
[ ] #counter (similar to #for)
[ ] zero option in #convolve (?)
[ ] #conv (simpler #convolve) should allow n-D convolution
[ ] #convolve rewritten as combination of #conv+#border ?
[ ] #store: option zero (?)
[ ] #import~, #export~
[ ] #fold, #scan: option reverse (right-to-left)
[ ] #join: option swap
[ ] #matrix_solve, #replace_if, #random_select, #markov_chain, #splice
[ ] #draw_polygon smoothly
[ ] write a complete benchmark
[ ] spatial biquads (ask Tom)
[ ] string operations to compensate for the feebleness of PD in that area. this includes [#sprintf].
[ ] see also APL/J/NArray/PDL/Aplus/Yorick/IPOW reference
Effects
[ ] #mosaic
[ ] #gaussian_blur, #sobel, #pixelize, #despeckle (median)
[ ] #dither, #draw_lines, #draw_points, #fire, #queue
[ ] #chroma_key: i0=RGBpicture i1=RGBcolor i2=tolerance o0=RGBApicture
with fuzzy flag; (don't call it #chroma_key though)
maybe #mask...
[ ] turtle (logo style)
[ ] effectv
[ ] create abstractions for usage patterns (eg: like #remap_image)
[ ] see gimp for ideas
[ ] multilinear interpolation a+(b-a)*x+(c-a)*y+(a-b-c+d)*x*y (#scale_by smoothly?)
[ ] #scale_by/#downscale_by fractional values
[ ] bicubic interpolation
[ ] multilinear interpolation (n-dimensional?)
[ ] #daltonism
[ ] #perlin ?
[ ] #moment could support more than 2 dimensions
[ ] note in the helpfiles what is meant by YUV in gridflow (what colorspace that is)
Input/Output
[ ] a #store that is persistent (saved in .pd) ?
[ ] Grid: support storage in all six types
[ ] Grid: bpv 1,2,4 uint
[ ] Grid: text version of the format
[ ] Gimp, ffmpeg, xine, mplayer, PDP, OSC
[ ] x11,sdl,aalib: use buffering to synchronise frames at a constant rate.
[ ] x11: sync with the actual vsync of the monitor
[ ] x11: double buffering using a Pixmap remote-object
[ ] support for audio in the mpeg streams
[ ] synchronized audio with the video when using mpeg1 & 2
[ ] full screen mode (without the menu bars or frames)
[ ] support for audio in cameras / videodev ... see field vcaps.audios
Format
[ ] remaining number type support in formats
[ ] threaded [#in]/[#out]
[ ] put_at/reassign in x11/sdl/quartz
[ ] Generic SHM/MMAP Drivers
[ ] "open grid pipe" and such.
[ ] format grid: "headerless until 10" (text files)
User Interface
[ ] color picker
[ ] #edit, grid edition dialog, etc.
[ ] vector slider (n parallel sliders in one, Dim(n))
[ ] 2d slider
[ ] radial slider (angle chooser)
[ ] drag-and-drop palette of object construction
[ ] object construction menu specialized for each class (generated from class reflection/metadata)
-mfpmath=sse2
remember to check for volatile VALUEs if GC problems ever occur
Tom Schouten wrote: «added demo/rawvideo.pf and some support scripts in bin/pf-rawvideo.*
this is an example on how to use external programs for raw video input.
rationale: mplayer is a very nice piece of software supporting virtually any input format/codec.
since i'm not planning to waste time on integrating more input codecs in pf, the best alternative is to have mplayer
(actually mencoder) or ffmpeg as a subprocess. the same will be done for recording later.»
very old bookmarks:
http://pdl.perl.org/
http://www.opendragon.com/Pages/MaxObjects.shtml (not responding)
http://homepages.inf.ed.ac.uk/rbf/HIPR2/wksheets.htm
http://freej.dyne.org/
FObject.subclass("memstat",1,1) {
def _0_bang; File.open("/proc/#{$$}/stat") {|f| send_out 0, Float(f.gets.split(" ")[22]) / 1024.0 } end
# lookup process stats for the currently running pd and figure out how much RAM it uses.
# virtual size of RAM in kilobytes (includes swapped out and shared memory)
}
there are bugs with abstractions that use [route]->[list] instead of [route2] because they fail when $1="list".
svn propset svn:mime-type text/pure-data *.pd
Benchmarks on a Pentium M 1733 (with #out x11):
(fps) 0.9.0 0.9.3 0.9.4
waves.pd rain 41.1 49.5 50.5
game_of_life.pd 162 183 188
sand.pd 18.7 20.5 20.1
cellular_1d.pd 115 130.1 130
wave_1d.pd 63.0 81.7 81.7
Benchmarks on a Pentium M 1733 (without window):
(fps) 0.9.0 0.9.3 0.9.4
waves.pd rain 50.1 63.0
game_of_life.pd 397 507
sand.pd 27 30
cellular_1d.pd 475 730
wave_1d.pd 107 173
|