/* $Id$ */ "!" is planned for next release starting with 1.0, backwards compatibility will be kept Community [ ] make IRC channel #dataflow [ ] 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.3) [ ] add test plan [ ] follow test plan [ ] review all documentation [ ] review all patches [!] upload & send announcement (jmaxvideo,jmax,0xff,fm.net,pd) Installation [ ] installable doc [ ] installable includes ? [ ] produce binaries (.tar.gz .rpm .deb ?) [ ] introduce jMax 3.x support (whenever jMax 3.x itself is ready) [ ] 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 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 [ ] document backward compatibility issues [ ] typical uses: --- 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) [ ] obsolete grid_end; rename grid_begin -> grid [ ] 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 [ ] passive inlets (associated to variables) [ ] replace current macro system by SWIG or Inline.rb ? [ ] better error handling [ ] MMX memcpy() ? [ ] runtime configurable packet_length [ ] 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 [ ] accounting: grids messages packets numbers bytes copybytes [ ] more profiling? [ ] pull mode (functional-style) [ ] 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... [ ] add log* Computation Objects [ ] @type, @cast [ ] @cartprod (?) [ ] @slice (@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 [ ] @polygon [ ] @matrix_inverse, @matrix_solve [ ] @sort ? [ ] op_fold2 ? [ ] @transpose: dimension swapping [ ] @reverse (on given dimension number) [ ] bidirectional vector<->int packer/unpacker (in C using metaclass...) will replace @two, @three, @four. [ ] timelines as in MM-Director [ ] @replace_if [ ] @random_select, @markov_chain [ ] @two,@three,@four -> [@pack n] using metaclass [ ] @unpack Effects [ ] improve [ ] overlay using alpha channel [ ] 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 [ ] blinds, ... [ ] create templates for usage patterns [ ] split channels, join channels [ ] see gimp for ideas [ ] there's a way to double (?) the speed of the cross-fade. try interleaving the data and using [@inner] Input/Output [ ] in-place editing (rw mode) [ ] add Hermes support [ ] add messages "load", "save" as open,bang,close combos. [ ] arguments to @in,@out could be a auto-open. [ ] Pixonix bridge [ ] Max bridge [ ] Gimp bridge [ ] read/write PureData files [ ] read/write jMax files [ ] Gnome/Gstreamer bridge [ ] TCP: non-blocking write [ ] TCP Socket Buffering [ ] Grid: bpv 1,2,4,16,64 [ ] Grid: signed/unsigned [ ] MacOSX-Quartz, Win32-GDI, Win32-DirectX ? [ ] PTC, TinyPTC ? [ ] adjustable gf_clock [ ] Grid: text version of the format Format [ ] all: possibly get rid of the "format" notion ? [ ] all: rewinding file (or not) [ ] seq: multi-image (createable by cat, ar, tar or zip) [ ] multi: multi-file (by glob pattern, e.g.: foo*.ppm) [ ] Targa: RGBA-32 and write support [ ] PNM: P1,P2,P3,P4,P5 support [ ] XBM, XPM [ ] GIF, JPEG, PNG support (+ reg ourselves in libpng.org's applist) [ ] libquicktime.so, more libmpeg3.so [ ] fork: is a new format, for e.g. multiple MPEG drivers [ ] Videodev: fix RGB<->BGR<->??? palette issues [ ] Raw: a new format for reading arbitrary data. [ ] Common message-passing format (includes other things than grid) [ ] libaa [ ] /dev/dsp [ ] /dev/mixer [ ] Generic SHM Driver [ ] Generic MMAP Driver [ ] Unix-for-jMax 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 Bugs [ ] format_x11 causes delayed crash when closing its associated window [ ] format_x11 causes crash (resizing + shm, sometimes) [ ] distinguish "mod" and "%" properly (re: rounding) [ ] TCP server socket busy even after kill [ ] make better detection of libmpeg version [ ] detect and reject .a linkage [ ] possibly remove Number and sizeof(Number) (often does not make sense) [ ] 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 [ ] issues with fork() and X11 ? [ ] memory corruption when running GridFlow/PD for too long [ ] @scale_to is broken [ ] rtmetro does not stop [ ] method_missing does blackholing [ ] warning: -Wno-strict-prototypes is not supported in C++ [ ] BitPacking should not be a GridObject. [ ] undefined method `delete' for false (@fobjects_set) [ ] if @out#open fails, then a segfault might occur during next #open (?) [ ] don't try resizing the window before it opens (???) (loadbang?) [ ] tanh should be called tanh* [ ] probable memory corruption during initialization of GridFlow [ ] [@export_list] blows up with >=125 elements (alx) [ ] Format#init stopped initializing dim,bit_packing (there may be bugs dating back to that change) [ ] implement IO#read_into [ ] make test: [gf] total 31476 lost bytes in 445 allocations [gf] total 18604 lost bytes in 445 allocations 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 un e 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?