From: Artyom B. <ar...@z2...> - 2003-03-20 08:47:10
|
hi the following is a result of my evaluation of possibilities to use CORBA for implementing v2_jam's distributed processing and control functionality. CORBA is a bunch of standarts on distributed object systems. it describes how to create objects that can be accessible to other programs on the same or remote hosts. i find it handier then proposed earlier XML over HTTP way to communicate with client(s) + it allows uniformity of communication (but server-server and client-server will use the same mechanism). since CORBA is all that general it's implementations aren't optimized for media streams. hence the actual media/control streams, which need realtime performance, shouldn't go via CORBA but rather via dedicated channels (such as conventional video/audio streams, OSC for control signals, etc). 1. v2jam APIs - libv2jam: comon to client and server functionality (e.g. finding the CORBA name service) used by libjamka/libsimca - libjamka: client API - finding the simca-server etc. this library allows creating clients. - simca corba interfaces. i've come up with two interfaces so far - SimcaObject and SimcaContainer. simca-server itself implements SimcaContainer interface. container allows instantiating the objects and moving them from one container to another. object allows its properties to be get/set and commands to be executed. these interfaces are used by client to control the server(s) and by server(s) to interoperate (e.g. create the distributed links). - libsimca: the objects API, like it is now. isn't CORBA aware. probably in the future some of the functions will seize to exist, because will be implemented by the simca-server. for now corba interfaces can simply wrap around the corresponding libsimca functions. 2. v2jam applications - simca (or simca-server): implements simca corba interfaces wrapping them around the libsimca objects and objects provided by modules. - simca modules: provide libsimca based objects that perform actual media processing. - jamka: generic v2_jam GUI - connects to simca-servers and allows creation of pipelines, starting/stoping them, controlling the objects parameters etc. - other clients: e.g. project specific GUIs, non-GUI controllers: scripts, daemons etc. any application linked against libjamka can be v2_jam client. 3. plan of implementation - review the libsimca code and design the simca corba interfaces - implement corba interfaces / simca-server + finish the libsimca TODOs and FIXMEs - start working on media objects - design and implement: - libjamka (client API) - distributed connectivity mechanism - simple client (e.g. command line / python based) for testing purposes - jamka (generic client) some design things can happen simultaneously, e.g. generic client design can start now, even though no underlying functionality is here. we'd rather design libjamka based on jamka description... i'd like madris and lenno to think about that, next monday we can meet and discuss jamka. cheers, artm -- Artem Baguinski: <ar...@v2...> <http://www.artm.org/> V2_lab: <http://lab.v2.nl/> <http://www.v2.nl/> |