1. SHELL OBJECT 2. EMBEDDED WINDOWS (?) 3. pd help files 4. make gf work on "meg" 5. workshop/workshop.htm 6. FObject::grid_class *has* to go. /* $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 [ ] should now plan which features are pre-1.0 and which are post-1.0 [ ] add test plan [ ] follow test plan [ ] review all documentation [ ] review all samples [ ] make CDs Installation [ ] installable doc [ ] installable includes ? [ ] produce linux binaries ("static") [ ] produce cygwin32 binaries [ ] produce macosx binaries [ ] produce linux rpm/deb [ ] less compile-time checks and more run-time checks [ ] should GridFlow be bundled with some of its own dependencies? [ ] reintroduce --puredata-dist-dir ? [ ] --prefix (pour ruby) [ ] install vs site-install mess [ ] --whole-archive [ ] bridge should check that the gridflow.so file matches. Documentation [ ] indiquer comment faire un rapport à propos d'une carte v4l ou d'un mode x11 non-supporté [ ] project_policy.xml [ ] validate samples/outside [ ] specify policy for , , etc. [ ] add credits [ ] things you type verbatim are all in KBD blocks [ ] placeholders for your own values are all in I blocks [ ] document our own release procedures, how our CVS works [ ] 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 [ ] typical uses: [ ] architecture: class->type/shape->use->role [ ] it should be indicated whether an object is supported by jmax/pd/ruby/c++ [ ] heavily hyperlink documentation [ ] automate more parts of the documentation --- remember to keep doc/help/screenshots/samples up to date Architecture [ ] replace current macro system by SWIG or Inline.rb ? [ ] Add simple C preprocessor to allow multi-line strings (because of rb_eval_string ?) [ ] dimension list pattern matching system [ ] argument list processing system [ ] inlet-variables (variables associated to inlets) [ ] better error handling [ ] MMX memcpy() ? [ ] MMX _runtime_ autodetection [ ] 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 &<< >>& [ ] 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... [ ] jMax/PD bridges should support list-literals inside 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. [ ] User-defined operators; compound operators... e.g. [@ {{* 7} + {>> 3}}] [ ] n-ary operators... make [@] a metaclass [ ] lazy grids: Grid#operator Pt 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. Computation Objects [ ] @type [ ] @splice [ ] zero option in @store (?) [ ] zero option in @convolve (?) [ ] shrink option in @convolve (?) [ ] @import~, @export~, @import*, @export* [ ] see APL/J/NArray/PDL/Aplus/Yorick reference [ ] see Image Processing Operator Worksheets [ ] @fold, @scan: option reverse [ ] @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 [ ] make a class that is a color equivalent of aalib [ ] polygon operators (@perimeter, @area, ...) Effects [ ] pinch [ ] pixelize, despeckle [ ] abyss effect [ ] @dither [ ] image-sur-image (@pip) [ ] 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 ? [ ] support: GEM, PDP, FreeFrame ? [ ] 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. [ ] shell object? [ ] ruby_udpsend -> jmax_udpsend [ ] add jmax_udpreceive 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. [ ] quicktime write [ ] AVI [ ] Follow new rewind/loop policy : jpeg.c mpeg3.c mpeg.c quicktime.c [ ] a bang when the video file is done playing so you could loop it easily or go to another clip... User Interface [ ] 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) [ ] drag-and-drop palette of object construction [ ] object construction menu specialized for each class (generated from class reflection/metadata) 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 very often gives wrong results [ ] 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 ? [ ] 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 [ ] 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?) [ ] videodev stays busy after closing patch ? [ ] GRID_FINISH triggered while backstore ??? [ ] @for has a bug re negative step [ ] fts_class_install failed: Duplicated metaclass SOON: [ ] 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) maybe @mask... [ ] 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: buffer n grids [ ] 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 how about creating aliases like "open window" = "open x11 here" (or arbitrary user-defined sequence of messages settable in ~/.gridflow_startup) and "open videodev" -> "open videodev /dev/video0, option channel 1, option size 240 320" maybe there should be a separate ~/.gridflow_config that would be saveable from gridflow, and ~/.gridflow_startup would be edited only by the user but ~/.gridflow_config would still be a text file. i say that because the startup is a ruby script so gridflow couldn't just do search-and-replace in there, because the option could be inside a "if" expression and such... at most, gridflow could _append_ text to .gridflow_startup, to be non-intrusive... hrm... i'm late. i should go now. 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? alx1->matju: détection de plusieurs personnes; détection avec deux caméras (?); détecter les formes; détecter les couleurs; support mpeg4; hotspots matju: another feature for the summer : select file to load via a navigable menu as in 'file/open' alx1: this is not a feature i can put in gridflow. if you want it, then i can make one for pd or jmax or both, but it does not make sense to add it to gridflow itself. > http://redshift.sourceforge.net/debugging-GC/ [ruby-talk:53835] > You might also want to search the web for "malloc debugger". alx: what do you think of the following idea: [@foo bar, baz, blah 42, zzz] would be like: [loadbang] -> "baz, blah 42, zzz" -> [@foo bar] where "baz, blah 42, zzz" is 3 msgs in a msgbox (sent in order upon bang) debugging: gdb `which ruby` ---------------------- break main run -rgridflow -e ';' set step-mode on break eval.c:5409 cont add-symbol-file /usr/local/lib/ruby/site_ruby/1.6/i686-linux/gridflow.so rbreak ^_init stepi ---------------------- p dlopen("/opt/lib/ruby/site_ruby/1.8/i586-linux/gridflow.so",0)