From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: From: "Steve Simon" Date: Tue, 19 Jan 2010 15:40:49 +0000 To: 9fans@9fans.net In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: Re: [9fans] dataflow programming from shell interpreter Topicbox-Message-UUID: c0a9643a-ead5-11e9-9d60-3106f5b1d025 > The PBM utilities (now net pbm) did something similar for bitmaps. > I think V10 also had some pipeline utils for manipulating images. Indeed, however I make a firsm distinction between image proccessing (2d) and video processing (3d). In Video processing the image sequences can be of arbitary length, the processing is often across several fields, and, because we want our results ASAP tools should present the minimum delay possible (e.g. a gain control only needs a one pixel buffer). Aditionally image processing pipelines often have nasty things like feedback loops and mixing different paths with differing delays which all need special care. We have a package of good old unix tools developed jointly by us and the BBC which works as you might expect cat video-stream | interpolate -x 0.7 -y 0.3 | rpnc - 0.5 '*' | display however this can get quite ugly when the algorithm gets complex. We need to cache intermediate results - processing HD (let alone 2k 3d) can get time consuming so we want an environment which tee's off intermediate results automagicially and uses them if possible - sort of mk(1) combined with rc(1). It is also a pain that its not easy to work at different scales i.e. writing expressions to operate at the pixel level and using large blocks like interpolate, the rpnc is an attempt to do this but its interpreted (slow). a restricted rc(1)-like language which supports pipelines, and scalar (configuration) variables combined with a JIT compiler (in the vein of popi) looks like a solution but I have never go further than wishful thinking. -Steve