PyMash

Hiroyuki Komatsu komatsu at taiyaki.org
Wed Sep 3 14:32:34 CDT 2003


I wrote a prototype of a python wrapper for OpenMash.  The atteched
file <mash-code_pymash-5.2.diff> is the diff file for
<http:///www.openmash.org/download/5.2/mash-src-5.2.tar.gz>.


[Sample Code]
I replaced headlessVideo.mash by Chris to a python code as a sample.
(For the replacement, I had the great help of Chris.  Thanks!)
Here is the core of the sample:

============================================================
from openmash               import OpenMash
from openmash_VideoAgent    import VideoAgent
from openmash_VideoPipeline import VideoPipeline

class HeadlessVideo:
    def __init__(self, host, port, ttl = 16, key = None):
        self.agent    = VideoAgent(host, port, ttl)
        self.pipeline = VideoPipeline(self.agent)
        if key is not None:
            self.agent.install_key(key)

    def run (self, device_number, codec):
        devices = self.pipeline.get_input_devices()
        self.pipeline.select(devices[device_number], codec)
        self.pipeline.start()

    def enhance (self, channel = None, format = None, bps = None,
                 fps = None, quality = None):
        self.pipeline.set_options(port = channel, norm = format, bps = bps,
                                  fps = fps, quality = quality)

------------------------------------------------------------

        def main(self, *args):
            headless_video = HeadlessVideo(self.host, self.port, self.ttl,
                                           self.key)
            headless_video.run(self.device_number, self.codec)
            headless_video.enhance(channel = self.channel,
                                   format  = self.format,
                                   bps     = self.bps,
                                   fps     = self.fps,
                                   quality = self.quality)

            while True:
                OpenMash.update()
                time.sleep(0.1)
============================================================

<mash-code>/mash/python/example/headless.py is the whole code.


[Requirement to Complie]
  SWIG
  AutoTools (autoconf)
  Python ;-)


[How to Complile]

1. Patch this patch.
  % cd <mash-code>
  % patch -p1 < <mash-code_pymash-5.2.diff

2. Complie other source trees except mash.

  % build tcl
  % build tk
  % build otcl
  % build tclcl
  % build gsm
  % build srm

3. Create configure file in mash directory.

  % cd mash
  % autoconf

4. Create pymash

  % ./configure --disable-devel --python-includedir=<include dir for python>
  % make pymash

  On my environment (Linux/Debin), python-includedir is
  </usr/include/python2.3>


[How to Test]

  % cd <mash-code>/mash/python
  % TCLCL_IMPORT_DIRS=.. python example/headless.py 127.0.0.1 9886 -d0 &
  % vic 127.0.0.1/9886

  The vic would probably display test transmission from headless.py.


[How to Install]

  Not implemented yet.


The current PyMash is based on smash (ie. non-Tk version).
So, as a next step, I am going to modify PyMash to handle Tk or
another window tool kit like WxPython.  And then, I have a plan to
write a vic-clone in Python.

No more Tcl.
--
Hiro

-------------- next part --------------
A non-text attachment was scrubbed...
Name: mash-code_pymash-5.2.diff
Type: application/octet-stream
Size: 23737 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/ag-dev/attachments/20030904/af485e2e/attachment.obj>


More information about the ag-dev mailing list