diff options
Diffstat (limited to 'externals/gridflow/TODO')
-rw-r--r-- | externals/gridflow/TODO | 447 |
1 files changed, 0 insertions, 447 deletions
diff --git a/externals/gridflow/TODO b/externals/gridflow/TODO deleted file mode 100644 index 8a4d5337..00000000 --- a/externals/gridflow/TODO +++ /dev/null @@ -1,447 +0,0 @@ -/* $Id: TODO 4242 2009-10-18 19:31:59Z matju $ */ - -oct.2009 -[ ] 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. -[x] rename "cv." prefix to "cv/#" -[ ] <mescalinum> matju: anyway, in #-help.pd, object [doc/numop] is still error -[ ] [@convolve] and stuff can't handle [args] that come out as grid literals and have to become setter messages. - -PFOAC/BNL 2009 -[ ] randomise positions and send offsetted text after choosing a position -[ ] store bboxes -[ ] [#interval_overlap] -[ ] script python - -0.9.5 -[ ] 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 -[ ] reintroduce set_mode(0) -[ ] get rid of architecture.html -[ ] support "get" in abstractions -[ ] fix [nbx]<->[hsl] relationship in [#camera] -[ ] bugs roman -[ ] add claude's fixes -[ ] other gf mails in inbox -[ ] #line_to_polygon is buggy -[ ] #draw_polygon init_lines() not sufficiently called -[ ] regular dc1394 options -[ ] irregular dc1394 options: white_shading, white_balance - trigger_mode? trigger, trigger_delay -[ ] Accumulation of Background Statistics -[x] correction/détection de translations dans l'image (avec fft et #remap_image). -[ ] cvEstimateRigidTransform -[ ] compenser pour les ajustements progressifs ou soudains de luminosite -[x] ajouter detection et correction d'interference par fft -[ ] cvEllipse -[ ] cvApproxPoly pour un seul poly à la fois -[ ] cvMeanShift (?) -[ ] cvCamShift (?) - Ça 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. -[ ] 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". -[ ] 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). -[ ] cvOpticalFlow - -whatever version -[ ] [cv.split] -[ ] reestablish 'gzfile' feature in a better way. (gzfile is disabled for now) -[ ] ... -[ ] [fps]: translate into pd: "publish if fps>0.001" (to remove outliers) -[ ] conversion from float to int is inconsistent: when to round and when to trunc? -[ ] reimplement negative indices in [listelement] and [listsublist] -[ ] with pwc, 720x480 crashes -[ ] fix SDL modifiers -[ ] fix quoting in [display] - -soon: - * remove reference.*ml - * videodev.c should be upgraded to V4L2 asap. - -+-------+-------+-------+-------+-------+-------+-------+------- -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? -[ ] videojack -[ ] http://gstreamer.freedesktop.org/ -[ ] distinguish between C++ types Grid* and GridFlow* -[ ] make [#draw_points] [#draw_rect] [#edit_polygon] -[ ] Salsaman recommends supporting Videojack because of unicap support which means getting DV support for free. -[ ] look at camorama -[ ] OpenCV -[ ] Generic Image Library: http://opensource.adobe.com/gil/html/giltutorial.html -[ ] [for] has a bug in "from". -[ ] #out x11 doesn't accept 0-sized grids -[ ] #print doesn't accept 0-sized grids -[ ] #inner doesnt support seeds of size>1, and isn't vecop-compatible, and ... -[ ] #inner could optimise permutation matrices? -ClaudiusMaximus matju: [#draw_image] inlet 0 method "op <opname>" is undocumented, but very useful :) -ClaudiusMaximus matju: [unix_time] is maldocumented, outlet 0 is a grid Dim[28](uint8), not a symbol - -[ ] update doc -[ ] claude wants http://en.wikipedia.org/wiki/Graham_scan - -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 - -[ ] -ftree-vectorizer-verbose -[ ] try removing or modifying -falign on PPC/OSX -[ ] encoding of quicktime RGBA only works with [#cast b] (is that still true?) -[ ] reading tux.tga is completely broken -[ ] install of libquicktime is very wrong on my system (is it 0.9.8?) -[ ] 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 -[ ] [display] leaks in server ? -[ ] 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]? -[ ] #: option swap -[ ] consider including [mysql] [renamefile] [ls] [shell] -[ ] re-enable int64,float64 -[ ] added #matrix_solve, #slice -[ ] Copy-on-Write (COW) -[ ] internals documentation -[ ] internal grid protocol redesigned -[ ] raise limit of in/outlets from 10 to 100 or unlimited. -[ ] look into -ftree-vectorize -[ ] look at Tetra Piccolo capture cards, as well as ImpactVCB (Hauppauge) - -[145] "list -1"->[@import] only tells error message once every other time -[144] small leak remaining in x11. may have to do with non-use of XDestroyImage. -[140] is [@convolve] actually cross-convolution? - that is, convolves with a mirror image of the convolution matrix. -[139] [peephole] - <mis> matju: if you try to move the GOPed abstraction the peepholes don't move along - <mis> he :) better yet, the abstraction's bounding box's lower right corner will not - move up or to the left of the low right corner of the peephole it contains. - Instead it will resize itself as you move it around. -[134] #import with zero size crashes? -[133] numop ** can freeze GF -[117] osx: [#store] crash instead of raising -[107] MMX computations may be done misaligned, which may be bad. -[105] when file not found, mpeg error messages are wrong, they say the filename is "". -[102] osx: error: shmget failed (cannot allocate memory) in X11, for regular pictures -[078] "unsupported codec" bogus errors. -[025] format_grid: write test for other bpv's -[030] FormatGrid: not properly tested (crashes sometimes) -[031] stdout should be redirected if bridge is present -[034] format/mpeg3.c,quicktime.c might cause lockup on exit -[038] some seeds aren't typechecked -[039] jpeg file cat crashes on second file (jpeglib buffering?) -[040] GRID_FINISH triggered while backstore ??? -[079] can trap segfaults in codecs of libquicktime. -[090] http://poynton.com/notes/colour_and_gamma/ColorFAQ.html#RTFToC30 -[041] what would be a way to make GF work well with Pd's idea of a list? -[045] write unit tests about required functionality -[046] write unit tests about error checking -[047] make system to ensure everything is working before a release. -[048] potential issues between fork() and X11 ? -[054] it's possible to crash by sending data in two inlets of a same object at once - ---- make the development process more test-driven: - * file every feature request and bug report into base/test.rb so - that gridflow fails those tests THEN make gridflow pass those tests. - -=================== - -Installation -[ ] less compile-time checks and more run-time checks -[ ] should GridFlow be bundled with some of its own dependencies? -[ ] find a good profiler (not gridflow's internal...) -[ ] cross-compile: - http://www.libsdl.org/extras/win32/cross/ - http://rooster.stanford.edu/~ben/linux/cross.php - -Documentation -[ ] make a short feature list as a promo -[ ] add credits -[ ] 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 -[ ] document backward compatibility issues -[ ] architecture: class->type/shape->use->role -[ ] heavily hyperlink documentation -[ ] automate more parts of the documentation -[ ] benchmarks (especially: simple video i/o) -[ ] mimic [pdp_help_input] [pdp_help_output]: they are convenient ---- remember to keep doc/help/screenshots/examples up to date - -Architecture -[0.9] reentrancy of objects (to allow true recursion) -[0.9] inlet-attrs (attrs associated to inlets) -[ ] 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) -[0.9] 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. -[0.9] accounting: grids messages packets numbers bytes copybytes -[0.9] 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. -[0.9] MMX memcpy() ? -[0.9] MMX _runtime_ autodetection - -Computation Objects -[ ] #counter (similar to #for) -[ ] #for "step" argument should have default {1...} -[ ] 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_inverse, #matrix_solve -[ ] #timeline (or rtmetro): sequencing of events from grid -[ ] #replace_if, #random_select, #markov_chain, #sort, #slice, #splice -[ ] #polygon_perimeter, #polygon_area, #draw_polygon smoothly -[ ] fuzzy #store (interpolate) -[ ] write a complete benchmark script -[ ] 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 -[ ] kaleidoscopes -[ ] bilinear 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 - -#<vektor> told me to: -# RGBtoYUV : @fobjects = ["#inner (3 3 # 66 -38 112 128 -74 -94 25 112 -18)","@ >> 8","@ + (16 128 128)"] -# YUVtoRGB : @fobjects = ["@ - (16 128 128)",#inner (3 3 # 298 298 298 0 -100 516 409 -208 0)","@ >> 8"] - -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, GStreamer, ffmpeg, xine, mplayer, PDP, OSC -[ ] get subtitling of tv channels -[ ] add messages "load", "save" as open,bang,close combos. (?) -[ ] 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 -[ ] [serial_port] -[ ] 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 -[ ] fork: pseudoformat for launching format handler as separate process -[ ] put_at/reassign in x11/sdl/quartz -[ ] Generic SHM/MMAP Drivers -[ ] "open grid pipe" and such. -[ ] multi: multi-file (by glob pattern, e.g.: foo*.ppm) -[ ] AVI -[ ] 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) - -Extra/Examples/Etc -[ ] .pd: read; write better -[ ] examples/generique.pd -[ ] add examples from the workshop, etc - -<matju> alx: -le tab completion ne donnerait pas seulement les noms possibles pour le -prochain argument dans le objectbox; il donnerait aussi une description de -l'argument (surtout dans le cas où l'argument a beaucoup de valeurs -possibles). je pense que le help de Pd est une bonne idée (le concept hands-on) -mais ça pourrait aller plus loin. j'ai pensé intégrer le manuel de référence de -gridflow directement dans le programme, disponible au runtime, dans l'éventualité -d'un GUI qui saurait en tirer avantage. - -<alx1> matju: détecter les formes; détecter les couleurs; support mpeg4; hotspots - -ClaudiusMaximus reports that allocating a 197M grid causes a crash (turns out C++ -throws exception, can't allocate, signal ABRT) - -ClaudiusMaximus says: I want to be able to send output from Pd+Gridflow to a video4linux -loopback device so that other v4l programs can access the stream. -I found the video loopback device here: http://motion.sourceforge.net/vloopback/ - -<alx2> -iSight on linux : http://episteme.arstechnica.com/6/ubb.x?a=tpc&s=50009562&f=8300945231&m=40110681 -needs something called 'coriander'. the person who got it working mentions libdc1394. -http://www.tele.ucl.ac.be/PEOPLE/DOUXCHAMPS/ieee1394/cameras/index.html: -I learn that the iSight is compliant with version 1.30 of IIDC. -the docs for coriander mention that the author needed to create a major and minor device for the camera. -retyping (damn pdf's) -> there are two devices to create: raw1394 and video1394 -raw1394 has major 171 and minor 0 while video1394 had major 171 and minor 16 -any useful info? -having a camera like the iSight supported could be fantastic for video capture/detection on a laptop. Not to mention that the bttv cards are getting harder to locate - --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) - gstreamer - Arts Builder - http://homepages.inf.ed.ac.uk/rbf/HIPR2/wksheets.htm - http://freej.dyne.org/ - -FObject.subclass("rubyarray",2,2) { - def initialize() @a=[]; @i=0; end - def _0_get(s=nil) - case s - when :size; send_out 1,:size,@a.size - when nil; _0_get :size - end - end - def _0_clear; @a.clear end - def _0_float i; @i=i; send_out 0, *@a[@i] if @a[@i]!=nil; end - def _1_list(*l) @a[@i]=l; end - def _0_save(filename,format=nil) - f=File.open(filename.to_s,"w") - if format then @a.each {|x| f.puts(format.to_s % x) } - else @a.each {|x| f.puts(x.join(",")) } - end - f.close - end - def _0_load(filename) - f=File.open(filename.to_s,"r") - @a.clear - f.each {|x| @a.push x.split(",").map {|y| Float(y) rescue y.intern }} - f.close - end -} - - - -FObject.subclass("regsub",3,1) { - def initialize(from,to) _1_symbol(from); _2_symbol(to) end - def _0_symbol(s) send_out 0, :symbol, s.to_s.gsub(@from, @to).intern end - def _1_symbol(from) @from = Regexp.new(from.to_s.gsub(/`/,"\\")) end - def _2_symbol(to) @to = to.to_s.gsub(/`/,"\\") end - #doc:_0_symbol,"a string to transform" - #doc:_1_symbol,"a regexp pattern to be found inside of the string" - #doc:_2_symbol,"a replacement for the found pattern" - #doc_out:_0_symbol,"the transformed string" -} - -FObject.subclass("memstat",1,1) { - def _0_bang - f = File.open("/proc/#{$$}/stat") - send_out 0, Float(f.gets.split(" ")[22]) / 1024.0 - f.close - end - #doc:_0_bang,"lookup process stats for the currently running pd and figure out how much RAM it uses." - #doc_out:_0_float,"virtual size of RAM in kilobytes (includes swapped out and shared memory)" -} - -FObject.subclass("rubysprintf",2,1) { - def initialize(*format) _1_list(format) end - def _0_list(*a) send_out 0, :symbol, (sprintf @format, *a).intern end - alias _0_float _0_list - alias _0_symbol _0_list - def _1_list(*format) @format = format.join(" ") end - alias _1_symbol _1_list -} - -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 - - - |