/* $Id$ */ Community [ ] put new samples on website [ ] add on website: [ ] looking for someone to take care of win32 port [ ] looking for someone to take care of macosx port Distribution (0.6.5) [ ] add test plan [ ] follow test plan [!] review all documentation [!] review all samples [ ] upload & send announcement (jmaxvideo,jmax,0xff,fm.net,pd) Installation [!] installable doc [ ] installable includes ? [ ] produce linux binaries ("static") [ ] produce cygwin32 binaries [ ] produce macosx binaries [ ] produce linux rpm/deb [ ] add macos 10.x support (i need access to a mac) [ ] less compile-time checks and more run-time checks [ ] should GridFlow be bundled with some of its own dependencies? [ ] reintroduce --puredata-dist-dir ? [ ] --ruby-prefix [ ] install vs site-install mess Documentation [ ] indiquer comment faire un rapport à propos d'une carte v4l ou d'un mode x11 non-supporté [ ] mention v4l_compat.o in docs [ ] project_policy.xml [ ] validate samples/outside [ ] specify policy for , , etc. [ ] add credits [ ] split reference.*ml into: elements.*ml objects.*ml formats.*ml [ ] add explanation of gridflow vs pixonix [ ] things you type verbatim are all in KBD blocks [ ] placeholders for your own values are all in I blocks [ ] find a good XML editor [ ] document our own release procedures, how our CVS works [ ] document how to report bugs, basic troubleshooting [ ] document our distribution of the archives [ ] improve protocol description [ ] ascii conventions: [foo] vs "foo", etc. [ ] document asymptotic cpu+memory usage [ ] document internals [ ] operator list: add columns for meaning as pixmap, indexmap [ ] describe indexmap in doc [ ] document backward compatibility issues [ ] typical uses: [ ] architecture: class->type->use->shape->role [ ] it should be indicated whether an object is supported by jmax/pd/ruby/c++ [ ] rework the DTD/documentation system at whole --- remember to keep doc/help/screenshots/samples up to date Architecture [ ] Add simple C preprocessor to allow multi-line strings (because of rb_eval_string ?) [ ] Design the GF-1.0 architecture (new internals documentation) [ ] identify streams by ids given at grid msg (may allow for cancelling rejected grids?) (add cancel option to the r/rw choice in callback of grid msg ?) [ ] dimension list pattern matching system [ ] argument list processing system [ ] inlet-variables (variables associated to inlets) [ ] replace current macro system by SWIG or Inline.rb ? [ ] better error handling [ ] MMX memcpy() ? [ ] change the protocol completely: not based on messages, but rather a push/pull combination, add GridStream objects, allow them to be passed in other messages; etc... (?!?) [ ] trinary ops? eg. */ *+ ?: minmax &<< >>& [ ] make @store loopable [ ] MMX autodetection [ ] MMX computations integration [ ] pull mode (functional-style) [ ] remove all uses of assert() (replace by RAISE()) [ ] bidirectional messages (constraint/relational-style) [ ] send-reply messages (imperative-style) [ ] add reflection (@global#classes, @global#methods, ...) [ ] jMax metaclasses -> Ruby runtime subclass creation [ ] UnknownAtom class [ ] GFBridge object visible from Ruby [ ] use C++ destructor for C++ fields... [ ] jMax does not support literal lists in messages... [ ] sizeof(Pt<>) could be 4 instead of 12 for speed increase? [ ] DEF_OP2_BITWISE [ ] use MétaRuby typing to make things friendlier. [ ] transmitting grids by diffs? [ ] bin op "avg" (average) [ ] dispatch on _n_-prefixed methods (one selector any inlet) and _#{i}_-named methods (any selector one inlet) [ ] security modes: <=0 : can run arbitrary programs and ruby scripts ? <=1 : can write files <=2 : can read files <=3 : can open windows ? [ ] GRID_INLET/DIM_INLET could use a second buffer, Grid *next inside Grid objects. [ ] Outlet#buffer should harmonise with the lcm of its corresponding Inlet#factor's. Computation Objects [ ] @type, @cast [ ] @splice [ ] zero option in @store (?) [ ] zero option in @convolve (?) [ ] shrink option in @convolve (?) [ ] @import~, @export~, @import*, @export* [ ] see APL/J/NArray/PDL/Aplus reference [ ] see Yorick reference http://wuarchive.wustl.edu/languages/yorick/ydoc/manual/Arrays.html [ ] http://www.dai.ed.ac.uk/HIPR2/wksheets.htm [ ] @queue, as a replacement for double-@store feedback, and such. (?) [ ] @foldr, @scanr [ ] @matrix_inverse, @matrix_solve [ ] @transpose: dimension swapping [ ] @reverse (on given dimension number) [ ] timelines as in MM-Director [ ] @replace_if [ ] @random_select, @markov_chain [ ] @two,@three,@four -> [@pack n] using metaclass [ ] @unpack [ ] @import_symbol [ ] make a class that is a color equivalent of aalib [ ] merge @inner and @inner2 again (@inner2 would be alias) (option transposed) Effects [ ] pinch [ ] pixelize, despeckle [ ] abyss effect [ ] @dither [ ] image-sur-image [ ] n-frame delaying [ ] Y*X*RGBA <-> Y*X packing (96 <-> 32 bits) (???) [ ] HSV<->RGB; hue shifting [ ] HSV<->HSL [ ] RGB<->YUV [ ] effectv [ ] @draw_lines, @draw_points [ ] blinds, ... [ ] create templates for usage patterns [ ] see gimp for ideas [ ] there's a way to double (?) the speed of the cross-fade. try interleaving the data and using [@inner] or use @join and @layer. Input/Output [ ] in-place editing (rw mode) [ ] add Hermes support [ ] add messages "load", "save" as open,bang,close combos. [ ] jMax 4 bridge [ ] support: Pixonix, Max, Gimp, GStreamer, ffmpeg, Hermes/PTC/TinyPTC ? [ ] MacOSX-Quartz, Win32-GDI, Win32-DirectX ? [ ] Grid: bpv 1,2,4 [ ] Grid: text version of the format [ ] use 1.8.0's IO#read(Integer,String)->String [ ] x11,sdl,aalib: use buffering to synchronise frames at a constant rate. Format [ ] x11: draw with optional arguments on part of picture to redraw [ ] all: possibly get rid of the "format" notion ? [ ] TAR, ZIP, CAT with seeking [ ] PNM: P1,P2,P3,P4,P5 support [ ] XBM, XPM, GIF, PNG support (+ reg ourselves in libpng.org's applist) [ ] fork: is a new format, for e.g. multiple singleton drivers [ ] Videodev: fix RGB<->BGR<->??? palette issues [ ] Common message-passing format (includes other things than grid) [ ] /dev/dsp [ ] /dev/mixer [ ] Generic SHM Driver [ ] Generic MMAP Driver [ ] Unix-for-jMax [ ] "open grid pipe" and such. [ ] x11: colormap support jMax-UI [ ] color picker [ ] gridbox (akin to intbox) or grid edition dialog, etc. [ ] embedded display [ ] vector slider (n parallel sliders in one, Dim(n)) [ ] 2d slider [ ] radial slider (angle chooser) Extra/Samples/Etc [ ] make demo app(s) in Ruby/Tk [ ] world domination [ ] read/write PureData files [ ] read/write jMax files Bugs [ ] format_x11 causes delayed crash when closing its associated window [ ] format_x11 causes crash (resizing + shm, sometimes) [ ] TCP server socket busy even after kill [ ] make better detection of libmpeg version [!] detect and reject .a linkage [ ] write unit tests about required functionality [ ] write unit tests about error checking [ ] Window does not close when @out is destroyed [ ] profiler is severely broken [ ] format/mpeg.c seems to crash more often? [ ] format/mpeg3.c,quicktime.c might cause lockup on exit [!] tcp test is broken [ ] potential issues between fork() and X11 ? [!] method_missing does blackholing ? [!] warning: -Wno-strict-prototypes is not supported in C++ [ ] BitPacking should not be a GridObject nor a FObject. [ ] don't try resizing the window before it opens (???) (loadbang?) [!] [@export_list] blows up with >=125 elements (alx) [ ] Format#init stopped initializing dim,bit_packing (there may be bugs dating back to that change) [ ] cvs is not listed in the manual itself [ ] recurrent bug: stdout SHALL NOT be used outside of debugging because it interferes with normal functioning [ ] format_grid: write test for other bpv's [ ] problem in @for with zero-sized grids? [ ] BitPacking has trouble with masks that extend beyond int25be [ ] remove the crap given by -w of ruby [ ] @finished is not a proper replacement for [route grid_end] because of [fork]. solution: make end() happen automatically, without intervention from sender gridobject [ ] make: Dépendance circulaire site-install <- install abandonnée. (with ruby 1.8) [ ] @in needs 2 inlets to work but should have only one. [ ] it's possible to crash by sending data in two inlets of a same object at once [ ] {42 | 5} is considered as a grid without error message [ ] -fomit-frame-pointer is not rubygc-compatible ? [ ] make test: [gf] total 31476 lost bytes in 445 allocations [gf] total 18604 lost bytes in 445 allocations [ ] latency is not that good. (GC ?) [ ] RtMetro crashes if deleted while turned on. [ ] RtMetro isn't reliably working [ ] jpeg file cat crashes on second file (jpeglib buffering?) [ ] gcc 3.2 fails to instantiate templates [ ] videodev stays busy after closing patch ? SOON: [ ] aalib: option autodraw, option draw [ ] format grid: option headerless until 10 [ ] @fire [ ] @border [ ] @chroma_key: i0=RGBpicture i1=RGBcolor i2=tolerance o0=RGBApicture with fuzzy flag; (don't call it @chroma_key though) mais je pourrais faire @perspective inlet 0: dim(n,3) inlet 1: facteur k (l'oeil est au point 0,0,0; l'écran est le plan z=k) outlet 0: dim(n,2) */ [ ] remaining number type support in formats [ ] produce linux binaries ("static") [ ] @sort [ ] @slice [ ] improve cross_fade.jmax [ ] Grid: bpv 8,16,signed/unsigned [ ] samples/generique.jmax [ ] accounting: grids messages packets numbers bytes copybytes [ ] memory profiling [ ] TCP: non-blocking write [ ] TCP Socket Buffering [ ] read/write PureData files [ ] read/write jMax files [ ] multi: multi-file (by glob pattern, e.g.: foo*.ppm) [ ] make gridflow.pd_linux install in the proper spot Feature Requests From: Dave Bergevin [ ] synchronized audio with the video when using mpeg1 & 2 [ ] full screen mode (without the menu bars or frames) From: Alexandre Castonguay [ ] support for tcp/ip connections to control jmax objects (from a web interface) [ ] server side jmax to handle multiple incoming commands, audio + video streams [ ] support for audio in the mpeg streams From: Margit Hideg [ ] I wish to see server side jmax to handle multiple incoming commands, audio + video streams alx_away: je viens d'avoir une idée géniale tab completion dans jMax hum bah c'était juste génial pcq j'avais pas pensé aux problèmes logistiques. ça marcherait pour les object boxes mais pas pour le reste 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 jMax 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. sinon on pourrait faire des hacks cool genre un message "help" au inlet 0 enverrait une description de la classe dans le log. (sauf que dans ce cas: [rubyprint] est tenu d'afficher directement tout ce qu'il reçoit. alors doit-il écrire "help" ou écrire le help ? donc une option "open aalib" serait la 'seule' chose à faire pour avoir le même output que hasciicam? > http://redshift.sourceforge.net/debugging-GC/ > [ruby-talk:53835] > You might also want to search the web for "malloc debugger". paint.jmax: 380 ms -> 376 ms avec ruby 1.6.7, en vectorisant @store: ripple.jmax: 360 ms -> 350 ms -> 325 ms (320 ms) linear_transform.jmax: 220 ms -> 215 ms -> 205 ms (197 ms) color_correction.jmax(1): 430 ms -> 380 ms color_correction.jmax: 360 ms -> 320 ms -> 290 ms feedback_fractal.jmax: 110 ms -> 102 ms -> 95 ms (87 ms) puis [@ +] en asm: ripple.jmax: -> 272 ms ??? quoi??? (NON) [@ +] map sans asm: 0.111250 6.670429 6.559179 asm try1: 0.111536 7.856665 7.745129 lowerbound: 0.110734 6.043598 5.932864 [@ +] map2 sans asm: 0.110466 12.729992 12.619526 asm try1: 0.110560 14.325604 14.215044 asm try2: 0.112791 13.945315 13.832524 asm try3: 0.133181 13.049199 12.916018 [gf] 0.111542 12.892403 12.780861 gf_packet_length: [gf] 0.110921 20.290029 20.179108 16k [gf] 0.116051 19.483183 19.367132 8k [gf] 0.109559 16.473426 16.363867 4k [gf] 0.112778 13.002092 12.889314 2k [gf] 0.115907 11.209400 11.093493 1k [gf] 0.126447 10.890584 10.764137 ½k [gf] 0.141884 11.934371 11.792487 ¼k gfmemcopy: ripple.jmax: 325 ms -> 265 ms linear_transform.jmax: 205 ms -> 130 ms color_correction.jmax: 290 ms -> 235 ms feedback_fractal.jmax: 95(87) ms -> 83 ms ruby 1.8 read: [2.141271, 0.641674, 0.547968, 1.637770, 1.488898] # plain [2.162294, 0.609760, 0.527717, 1.633222, 1.476583] # "replace nothing" [1.986047, 0.683468, 0.530780, 1.639136, 1.484244] # read into "x"*bs [2.142630, 0.605984, 0.516127, 1.636103, 1.478584] # read into ""