New modules LiveVideo{In,Out} (interfaces will change!).
New programs V{send,receive} to send/receive video over UDP.
Comment typo changed in Vaddcache.
diff --git a/Demo/sgi/video/Vreceive.py b/Demo/sgi/video/Vreceive.py
new file mode 100755
index 0000000..8d7150e
--- /dev/null
+++ b/Demo/sgi/video/Vreceive.py
@@ -0,0 +1,74 @@
+#!/ufs/guido/bin/sgi/python-405
+
+# Receive live video UDP packets.
+# Usage: Vreceive [port]
+
+import sys
+import struct
+from socket import *
+import select
+import gl, GL, DEVICE
+sys.path.append('/ufs/guido/src/video')
+import LiveVideoOut
+
+PKTMAX = 16*1024
+WIDTH = 400
+HEIGHT = 300
+HOST = ''
+PORT = 5555
+
+def main():
+
+ port = PORT
+ if sys.argv[1:]:
+ port = eval(sys.argv[1])
+
+ width, height = WIDTH, HEIGHT
+
+ gl.foreground()
+ gl.prefsize(width, height)
+ wid = gl.winopen('Vreceive')
+ gl.qdevice(DEVICE.ESCKEY)
+ gl.qdevice(DEVICE.WINSHUT)
+ gl.qdevice(DEVICE.WINQUIT)
+
+ x, y = gl.getorigin()
+ lvo = LiveVideoOut.LiveVideoOut().init(wid, (x, y, width, height), \
+ width, height)
+
+ s = socket(AF_INET, SOCK_DGRAM)
+ s.bind(HOST, port)
+
+ ifdlist = [gl.qgetfd(), s.fileno()]
+ ofdlist = []
+ xfdlist = []
+ timeout = 1.0
+ selectargs = (ifdlist, ofdlist, xfdlist, timeout)
+
+ while 1:
+
+ if gl.qtest():
+ dev, val = gl.qread()
+ if dev in (DEVICE.ESCKEY, \
+ DEVICE.WINSHUT, DEVICE.WINQUIT):
+ break
+ if dev == DEVICE.REDRAW:
+ gl.clear()
+ elif s.avail():
+ data = s.recv(16*1024)
+ pos, w, h = struct.unpack('hhh', data[:6])
+ if (w, h) <> (width, height):
+ x, y = gl.getorigin()
+ y = y + height - h
+ width, height = w, h
+ lvo.close()
+ lvo = LiveVideoOut.LiveVideoOut() \
+ .init(wid, (x, y, width, height), \
+ width, height)
+ lvo.putnextpacket(pos, data[6:])
+ else:
+ x = select.select(selectargs)
+
+ lvo.close()
+
+main()