Hacked in audio support.
diff --git a/Demo/sgi/video/makemovie.py b/Demo/sgi/video/makemovie.py
index d8b49d0..0a620c0 100755
--- a/Demo/sgi/video/makemovie.py
+++ b/Demo/sgi/video/makemovie.py
@@ -3,6 +3,7 @@
 import sv, SV
 import VFile
 import gl, GL, DEVICE
+import al, AL
 
 import time
 import sys
@@ -13,21 +14,28 @@
 def main():
 	QSIZE = 16
 	TIME = 5
+	audio = 0
 
-	opts, args = getopt.getopt(sys.argv[1:], 'q:t:')
+	opts, args = getopt.getopt(sys.argv[1:], 'aq:t:')
 	for opt, arg in opts:
-		if opt == '-q':
+		if opt == '-a':
+			audio = 1
+		elif opt == '-q':
 			QSIZE = string.atoi(arg)
 		elif opt == '-t':
 			TIME = string.atoi(arg)
 
 	if args:
 		filename = args[0]
-		if args[1:]:
-			print 'Warning: only first filename arg is used'
 	else:
 		filename = 'film.video'
 
+	if audio:
+		if args[1:]:
+			audiofilename = args[1]
+		else:
+			audiofilename = 'film.aiff'
+
 	gl.foreground()
 
 	x, y = SV.PAL_XMAX / 4, SV.PAL_YMAX / 4
@@ -61,6 +69,7 @@
 
 	print 'Click left mouse to start recording', TIME, 'seconds'
 	ofile = None
+	afile = None
 	# Mouse down opens the file & freezes window
 	# Mouse up starts recording frames
 
@@ -81,9 +90,14 @@
 				gl.prefsize(x, y)
 				gl.winconstraints()
 				gl.wintitle('* ' + filename)
+				if audio:
+					afile = initaudio(audiofilename)
 				continue
-
-			# Mouse up -- actual recording
+			# Mouse up -- start actual recording
+			global recording, stop_recording
+			if audio:
+				stop_recording = 0
+				recording.release()
 			t0 = time.millitimer()
 			v.StartCapture()
 			while 1:
@@ -91,11 +105,10 @@
 				if t >= TIME*1000:
 					break
 				if v.GetCaptured() > 2:
-					print '(1)',
 					doframe(v, ofile, x, y, t)
 			v.StopCapture()
+			stop_recording = 1
 			while v.GetCaptured() > 0:
-				print '(2)',
 				doframe(v, ofile, x, y, t)
 				t = time.millitimer() - t0
 			gl.wintitle(filename)
@@ -109,6 +122,8 @@
 			# Quit
 			if ofile:
 				ofile.close()
+			if afile:
+				afile.destroy()
 			posix._exit(0)
 			# EndCapture dumps core...
 			v.EndCapture()
@@ -121,4 +136,36 @@
 	cd.UnlockCaptureData()
 	ofile.writeframe(t, data, None)
 
+AQSIZE = 16000
+
+def initaudio(filename):
+	import thread, aiff
+	global recording, stop_recording
+	afile = aiff.Aiff().init(filename, 'w')
+	afile.nchannels = AL.MONO
+	afile.sampwidth = AL.SAMPLE_8
+	params = [AL.INPUT_RATE, 0]
+	al.getparams(AL.DEFAULT_DEVICE, params)
+	print 'rate =', params[1]
+	afile.samprate = params[1]
+	c = al.newconfig()
+	c.setchannels(AL.MONO)
+	c.setqueuesize(AQSIZE)
+	c.setwidth(AL.SAMPLE_8)
+	aport = al.openport(filename, 'r', c)
+	recording = thread.allocate_lock()
+	recording.acquire()
+	stop_recording = 0
+	thread.start_new_thread(recorder, (afile, aport))
+	return afile
+
+def recorder(afile, aport):
+	# XXX recording more than one fragment doesn't work
+	# XXX (the thread never dies)
+	recording.acquire()
+	while not stop_recording:
+		data = aport.readsamps(AQSIZE/2)
+		afile.writesampsraw(data)
+		del data
+
 main()