summaryrefslogtreecommitdiffstats
path: root/Demo/sgi
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1992-08-20 14:46:46 (GMT)
committerGuido van Rossum <guido@python.org>1992-08-20 14:46:46 (GMT)
commit8a861be7f366331249d11b8fd48ceff1e821f06c (patch)
treeee77dd08543b80d200b514dad45543f0ec3a3bd6 /Demo/sgi
parent3accf984b31f085786c5d4dc6fb58b1fe54e4ae9 (diff)
downloadcpython-8a861be7f366331249d11b8fd48ceff1e821f06c.zip
cpython-8a861be7f366331249d11b8fd48ceff1e821f06c.tar.gz
cpython-8a861be7f366331249d11b8fd48ceff1e821f06c.tar.bz2
Add audio recording
Diffstat (limited to 'Demo/sgi')
-rwxr-xr-xDemo/sgi/video/Vrec.py48
1 files changed, 47 insertions, 1 deletions
diff --git a/Demo/sgi/video/Vrec.py b/Demo/sgi/video/Vrec.py
index af3d874..e246f54 100755
--- a/Demo/sgi/video/Vrec.py
+++ b/Demo/sgi/video/Vrec.py
@@ -75,11 +75,19 @@ def main():
elif opt == '-t':
TIME = string.atoi(arg)
+ if args[2:]:
+ sys.stderr.write('usage: Vrec [options] [file [audiofile]]\n')
+ sys.exit(2)
+
if args:
filename = args[0]
else:
filename = 'film.video'
+ if args[1:] and not audio:
+ sys.stderr.write('-a turned on by appearance of 2nd file\n')
+ audio = 1
+
if audio:
if args[1:]:
audiofilename = args[1]
@@ -171,6 +179,8 @@ def record(v, filename, audiofilename):
vout.writeheader()
buffer = []
thread.start_new_thread(saveframes, (vout, buffer))
+ if audiofilename:
+ initaudio(audiofilename, buffer)
gl.wintitle('(rec) ' + filename)
v.StartCapture()
t0 = time.millitimer()
@@ -202,9 +212,9 @@ def saveframes(vout, buffer):
time.millisleep(10)
else:
x = buffer[0]
- del buffer[0]
if not x:
break
+ del buffer[0]
data, t = x
vout.writeframe(t, data, None)
del data
@@ -212,6 +222,42 @@ def saveframes(vout, buffer):
vout.close()
+# Initialize audio recording
+
+AQSIZE = 8000
+
+def initaudio(filename, buffer):
+ import thread, aiff
+ 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 'audio sampling 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)
+ thread.start_new_thread(audiorecord, (afile, aport, buffer))
+
+
+# Thread to record audio samples
+
+# XXX should use writesampsraw for efficiency, but then destroy doesn't
+# XXX seem to set the #samples in the header correctly
+
+def audiorecord(afile, aport, buffer):
+ while buffer[-1:] <> [None]:
+ data = aport.readsamps(AQSIZE/2)
+## afile.writesampsraw(data)
+ afile.writesamps(data)
+ del data
+ afile.destroy()
+ print 'Done writing audio'
+
+
# Don't forget to call the main program
main()