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/LiveVideoOut.py b/Demo/sgi/video/LiveVideoOut.py
new file mode 100755
index 0000000..d9c1138
--- /dev/null
+++ b/Demo/sgi/video/LiveVideoOut.py
@@ -0,0 +1,56 @@
+# Live video output (display video on the screen, presumably from the net)
+
+import gl
+from VFile import Displayer
+
+
+# Video output (displayer) class.
+
+class LiveVideoOut:
+
+	def init(self, wid, xywh, vw, vh):
+		##print 'Init', wid, xywh
+		##print 'video', vw, vw
+		self.vw = vw
+		self.vh = vh
+		self.disp = Displayer().init()
+		info = ('rgb8', vw, vh, 1, 8, 0, 0, 0, 0)
+		self.disp.setinfo(info)
+		self.wid = wid
+		oldwid = gl.winget()
+		gl.winset(wid)
+		self.disp.initcolormap()
+		self.resize(xywh)
+		gl.winset(oldwid)
+		return self
+
+	def resize(self, (x, y, w, h)):
+		oldwid = gl.winget()
+		gl.winset(self.wid)
+		##print 'Resize', x, y, w, h
+		gl.winposition(x, x+w-1, y, y+h-1)
+		gl.reshapeviewport()
+		if w < self.vw or h < self.vh:
+			self.toosmall = 1
+		else:
+			self.disp.xorigin = (w-self.vw)/2
+			self.disp.yorigin = (h-self.vh)/2
+			self.toosmall = 0
+			##print 'VIDEO OFFSET:', \
+			##	self.disp.xorigin, self.disp.yorigin
+		self.disp.clear()
+		gl.winset(oldwid)
+
+	def putnextpacket(self, pos, data):
+		if self.toosmall:
+			return
+		oldwid = gl.winget()
+		gl.winset(self.wid)
+		nline = len(data)/self.vw
+		if nline*self.vw <> len(data):
+			print 'Incorrect-sized video fragment'
+		self.disp.showpartframe(data, None, (0, pos, self.vw, nline))
+		gl.winset(oldwid)
+
+	def close(self):
+		print 'Done video out'