i don't think a direct mapping of COM to Plan 9 fs model is
unnecessary.  for example, instead of mapping every control or
configuration interface and method to synthetic directories and files,
a single ctl file will do.

It didn't occur to me at all that anyone would want to implement DirectShow or anything like that on Plan 9. Anyhow, I suppose if anyone's going to do that they should probably first work on fast display drivers that leverage modern cards' overlay capabilities and a facilitating media infrastructure equivalent to DirectX. On run-of-the-mill PCs good video works depends a lot on software support of video hardware, of course.

The logic inside most DirectShow filters either is open source (like ffdshow) or has good open source equivalents. The interfacing (COM), as you have noted, and input/output, which is hardware-dependent and therefore probably weakly developed in Plan 9 (I don't really have an idea, just guessing), are the missing bits from a DirectShow-like (multi-pipe) video processing pipeline on Plan 9.


--On Thursday, January 21, 2010 13:36 -0800 Skip Tavakkolian <9...@9netics.com> wrote:

Aren't DirectShow filter graphs and programs like GraphStudio/GraphEdit
one  possible answer to the video processing question? Filter graphs can
be  generated by any program, GUI or CLI, and fed to DirectShow provided
one  learns the in and out of generating them.

DirectShow is COM; source/mux/transform/sink filters must provide a
number of interfaces (e.g.  IFileSinkFilter); other components
(e.g.  GraphBuilder) are there to make it easier to hook them
together.

i don't think a direct mapping of COM to Plan 9 fs model is
unnecessary.  for example, instead of mapping every control or
configuration interface and method to synthetic directories and files,
a single ctl file will do.  something like this seems sufficient:

        /ctl            # e.g. accepts run, stop, etc.  returns: paused, 
#outputs, config,
etc.    /event  # instead of callback notification
        /ipin/clone
        /ipin/n/ctl
        /ipin/n/event
        /ipin/n/data
        /opin/clone
        /opin/n/ctl
        /opin/n/event
        /opin/n/data

for a special purpose kernel one could add a driver and a fancy new
hook syscall (similar to pushssl and '#D') that would hook two fd's
together to eliminate the need for a user proc to transfer between
ipin/?/data and opin/?/data.



Reply via email to