]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Initial revision
authorGuido van Rossum <guido@python.org>
Mon, 4 Nov 1991 15:54:22 +0000 (15:54 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 4 Nov 1991 15:54:22 +0000 (15:54 +0000)
Demo/sgi/video/vcopy.py [new file with mode: 0755]

diff --git a/Demo/sgi/video/vcopy.py b/Demo/sgi/video/vcopy.py
new file mode 100755 (executable)
index 0000000..a492073
--- /dev/null
@@ -0,0 +1,108 @@
+# Copy a video file, interactively, frame-by-frame.
+
+import sys
+import getopt
+from gl import *
+from DEVICE import *
+
+def loadframe(f, w, h, pf):
+       line = f.readline()
+       if not line or line = '\n':
+               raise EOFError
+       x = eval(line[:-1])
+       if type(x) = type(0):
+               if pf: size = w*h*4
+               else: size = w*h*pf
+       else:
+               time, size = x
+       data = f.read(size)
+       if len(data) <> size:
+               raise EOFError
+       if pf:
+               windata = unpackrect(w/pf, h/pf, 1, data)
+               rectzoom(pf, pf)
+               lrectwrite(0, 0, w/pf-1, h/pf-1, windata)
+       else:
+               lrectwrite(0, 0, w-1, h-1, data)
+       return time, data
+
+def report(time, iframe):
+       print 'Frame', iframe, ': t =', time
+
+def usage():
+       sys.write('usage: vcopy infile outfile\n')
+       sys.exit(2)
+
+def help():
+       print 'Command summary:'
+       print 'n   get next image from input'
+       print 'w   write current image to output'
+
+def main():
+       opts, args = getopt.getopt(sys.argv[1:], '')
+       if len(args) <> 2:
+               usage()
+       [ifile, ofile] = args
+       ifp = open(ifile, 'r')
+       ofp = open(ofile, 'w')
+       #
+       line = ifp.readline()
+       if line[:4] = 'CMIF':
+               line = ifp.readline()
+       x = eval(line[:-1])
+       if len(x) = 3:
+               w, h, pf = x
+       else:
+               w, h = x
+               pf = 2
+       if pf:
+               w = (w/pf)*pf
+               h = (h/pf)*pf
+       #
+       ofp.write('CMIF video 1.0\n')
+       ofp.write(`w, h, pf` + '\n')
+       #
+       foreground()
+       prefsize(w, h)
+       wid = winopen(ifile + ' -> ' + ofile)
+       RGBmode()
+       gconfig()
+       qdevice(KEYBD)
+       qdevice(ESCKEY)
+       qdevice(WINQUIT)
+       qdevice(WINSHUT)
+       #
+       help()
+       #
+       time, data = loadframe(ifp, w, h, pf)
+       iframe = 1
+       report(time, iframe)
+       #
+       while 1:
+               dev, val = qread()
+               if dev in (ESCKEY, WINQUIT, WINSHUT):
+                       break
+               if dev = REDRAW:
+                       reshapeviewport()
+               elif dev = KEYBD:
+                       c = chr(val)
+                       if c = 'n':
+                               try:
+                                       time, data = loadframe(ifp, w, h, pf)
+                                       iframe = iframe+1
+                                       report(time, iframe)
+                               except EOFError:
+                                       print 'EOF'
+                                       ringbell()
+                       elif c = 'w':
+                               ofp.write(`time, len(data)` + '\n')
+                               ofp.write(data)
+                               print 'Frame', iframe, 'written.'
+                       else:
+                               print 'Character', `c`, 'ignored'
+               elif dev = INPUTCHANGE:
+                       pass
+               else:
+                       print '(dev, val) =', (dev, val)
+
+main()