def main(): v = sv.OpenVideo() for name in dir(SV): const = getattr(SV, name) if type(const) is type(0): sys.stdout.flush() params = [const, 0] try: v.GetParam(params) except sv.error, msg: ## print name, msg continue print name, params
def main(): gl.foreground() gl.prefsize(SV.PAL_XMAX, SV.PAL_YMAX) win = gl.winopen('video test') v = sv.OpenVideo() params = [SV.VIDEO_MODE, SV.COMP, SV.BROADCAST, SV.PAL] v.SetParam(params) v.BindGLWindow(win, SV.IN_REPLACE) gl.qdevice(DEVICE.ESCKEY) gl.qdevice(DEVICE.WINQUIT) gl.qdevice(DEVICE.WINSHUT) while 1: dev, val = gl.qread() if dev in (DEVICE.ESCKEY, DEVICE.WINSHUT, DEVICE.WINQUIT): v.CloseVideo() gl.winclose(win) return
def main(): format = SV.RGB8_FRAMES requestedwidth = SV.PAL_XMAX queuesize = 30 if sys.argv[1:]: queuesize = eval(sys.argv[1]) v = sv.OpenVideo() svci = (format, requestedwidth, 0, queuesize, 0) go = raw_input('Press return to capture ' + ` queuesize ` + ' frames: ') result = v.CaptureBurst(svci) svci, buffer, bitvec = result ## svci, buffer = result # XXX If bit vector not yet implemented print 'Captured', svci[3], 'frames, i.e.', len(buffer) / 1024, 'K bytes' w, h = svci[1:3] framesize = w * h gl.prefposition(300, 300 + w - 1, 100, 100 + h - 1) gl.foreground() win = gl.winopen('Burst Capture') gl.RGBmode() gl.gconfig() gl.qdevice(DEVICE.LEFTMOUSE) gl.qdevice(DEVICE.ESCKEY) print 'Click left mouse for next frame' for i in range(svci[3]): inverted_frame = sv.RGB8toRGB32(1, \ buffer[i*framesize:(i+1)*framesize], w, h) gl.lrectwrite(0, 0, w - 1, h - 1, inverted_frame) while 1: dev, val = gl.qread() if dev == DEVICE.LEFTMOUSE and val == 1: break if dev == DEVICE.REDRAW: gl.lrectwrite(0, 0, w - 1, h - 1, inverted_frame) if dev == DEVICE.ESCKEY: v.CloseVideo() gl.winclose(win) return v.CloseVideo() gl.winclose(win)
#! /usr/bin/env python
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] else: audiofilename = 'film.aiff' else: audiofilename = None v = sv.OpenVideo() # Determine maximum window size based on signal standard param = [SV.BROADCAST, 0] v.GetParam(param) if param[1] == SV.PAL: x = SV.PAL_XMAX y = SV.PAL_YMAX elif param[1] == SV.NTSC: x = SV.NTSC_XMAX y = SV.NTSC_YMAX else: print 'Unknown video standard', param[1] sys.exit(1) gl.foreground() gl.maxsize(x, y)
# Live video input class. # Note that importing this module attempts to initialize video. # Check if video is available. # There are three reasons for failure here: # (1) this version of Python may not have the sv or imageop modules; # (2) this machine may not have a video board; # (3) initializing the video board may fail for another reason. # The global variable have_video is set to true iff we reall do have video. try: import sv import SV import imageop try: v = sv.OpenVideo() have_video = 1 except sv.error: have_video = 0 except ImportError: have_video = 0 # The live video input class. # Only instantiate this if have_video is true! class LiveVideoIn: # Initialize an instance. Arguments: # vw, vh: size of the video window data to be captured. # For some reason, vw MUST be a multiple of 4. # Note that the data has to be cropped unless vw and vh are # just right for the video board (vw:vh == 4:3 and vh even). def __init__(self, pktmax, vw, vh, type): if not have_video:
import sys
def main(): format = SV.RGB8_FRAMES rate = 1 width = 0 drop = 0 mono = 0 grey = 0 greybits = 0 monotreshold = -1 fields = 0 number = 60 opts, args = getopt.getopt(sys.argv[1:], 'r:w:dg:mM:Gfn:') for opt, arg in opts: if opt == '-r': rate = string.atoi(arg) if rate < 2: sys.stderr.write('-r rate must be >= 2\n') sys.exit(2) elif opt == '-w': width = string.atoi(arg) elif opt == '-d': drop = 1 elif opt == '-g': grey = 1 greybits = string.atoi(arg) if not greybits in (2, 4, 8): print 'Only 2, 4 or 8 bit greyscale supported' elif opt == '-G': grey = 1 greybits = -2 elif opt == '-m': mono = 1 elif opt == '-M': mono = 1 monotreshold = string.atoi(arg) elif opt == '-f': fields = 1 elif opt == '-n': number = string.atoi(arg) if args[2:]: sys.stderr.write('usage: Vrec [options] [file]\n') sys.exit(2) if args: filename = args[0] else: filename = 'film.video' v = sv.OpenVideo() # Determine maximum window size based on signal standard param = [SV.BROADCAST, 0] v.GetParam(param) if param[1] == SV.PAL: x = SV.PAL_XMAX y = SV.PAL_YMAX elif param[1] == SV.NTSC: x = SV.NTSC_XMAX y = SV.NTSC_YMAX else: print 'Unknown video standard', param[1] sys.exit(1) gl.foreground() gl.maxsize(x, y) gl.keepaspect(x, y) gl.stepunit(8, 6) if width: gl.prefsize(width, width * 3 / 4) win = gl.winopen(filename) if width: gl.maxsize(x, y) gl.keepaspect(x, y) gl.stepunit(8, 6) gl.winconstraints() x, y = gl.getsize() print x, 'x', y v.SetSize(x, y) if drop: param = [SV.FIELDDROP, 1, SV.GENLOCK, SV.GENLOCK_OFF] else: param = [SV.FIELDDROP, 0, SV.GENLOCK, SV.GENLOCK_ON] if mono or grey: param = param + [SV.COLOR, SV.MONO, SV.INPUT_BYPASS, 1] else: param = param + [SV.COLOR, SV.DEFAULT_COLOR, SV.INPUT_BYPASS, 0] v.SetParam(param) v.BindGLWindow(win, SV.IN_REPLACE) gl.qdevice(DEVICE.LEFTMOUSE) gl.qdevice(DEVICE.WINQUIT) gl.qdevice(DEVICE.WINSHUT) gl.qdevice(DEVICE.ESCKEY) print 'Press left mouse to start recording' while 1: dev, val = gl.qread() if dev == DEVICE.LEFTMOUSE: if val == 1: info = format, x, y, number, rate record(v, info, filename, mono, grey, \ greybits, monotreshold, fields) elif dev == DEVICE.REDRAW: # Window resize (or move) x, y = gl.getsize() print x, 'x', y v.SetSize(x, y) v.BindGLWindow(win, SV.IN_REPLACE) elif dev in (DEVICE.ESCKEY, DEVICE.WINQUIT, DEVICE.WINSHUT): # Quit v.CloseVideo() gl.winclose(win) break
def openvideo(self): try: self.video = sv.OpenVideo() except sv.error, msg: print 'Error opening video:', msg self.video = None
def main(): QSIZE = 16 TIME = 5 audio = 0 opts, args = getopt.getopt(sys.argv[1:], 'aq:t:') for opt, arg in opts: if opt == '-a': audio = 1 elif opt == '-q': QSIZE = string.atoi(arg) elif opt == '-t': TIME = string.atoi(arg) if args: filename = args[0] 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 print x, 'x', y gl.minsize(40, 30) gl.stepunit(8, 6) gl.maxsize(SV.PAL_XMAX, SV.PAL_YMAX) gl.keepaspect(SV.PAL_XMAX, SV.PAL_YMAX) win = gl.winopen(filename) x, y = gl.getsize() print x, 'x', y v = sv.OpenVideo() v.BindGLWindow(win, SV.IN_REPLACE) v.SetSize(x, y) v.BindGLWindow(win, SV.IN_REPLACE) v.SetCaptureFormat(SV.RGB_FRAMES) v.SetCaptureMode(SV.BLOCKING_CAPTURE) v.SetQueueSize(QSIZE) v.InitCapture() if v.GetQueueSize() != QSIZE: QSIZE = v.GetQueueSize() print 'Warning: QSIZE reduced to', QSIZE gl.qdevice(DEVICE.LEFTMOUSE) gl.qdevice(DEVICE.WINQUIT) gl.qdevice(DEVICE.WINSHUT) gl.qdevice(DEVICE.ESCKEY) 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 while 1: dev, val = gl.qread() if dev == DEVICE.LEFTMOUSE: # Start recording if val == 1: # Mouse down -- preparations if ofile == None: ofile = VFile.VoutFile().init(filename) ofile.format = 'rgb8' ofile.width = x ofile.height = y ofile.writeheader() # XXX other format bits? # The window can't be resized from now gl.prefsize(x, y) gl.winconstraints() gl.wintitle('* ' + filename) if audio: afile = initaudio(audiofilename) continue # Mouse up -- start actual recording global recording, stop_recording if audio: stop_recording = 0 recording.release() t0 = time.millitimer() v.StartCapture() while 1: t = time.millitimer() - t0 if t >= TIME*1000: break if v.GetCaptured() > 2: doframe(v, ofile, x, y, t) v.StopCapture() stop_recording = 1 while v.GetCaptured() > 0: doframe(v, ofile, x, y, t) t = time.millitimer() - t0 gl.wintitle(filename) elif dev == DEVICE.REDRAW: # Window resize (or move) x, y = gl.getsize() print x, 'x', y v.SetSize(x, y) v.BindGLWindow(win, SV.IN_REPLACE) elif dev in (DEVICE.ESCKEY, DEVICE.WINQUIT, DEVICE.WINSHUT): # Quit if ofile: ofile.close() if afile: afile.destroy() posix._exit(0) # EndCapture dumps core... v.EndCapture() v.CloseVideo() gl.winclose(win)
#! /usr/bin/env python #! /ufs/guido/bin/sgi/python-405 # Capture a CMIF movie using the Indigo video library and board # The CMIF video file format is documented in cmif-film.ms. # Audio data is recorded in AIFF format, using the input sampling # rate, source and volume set by the audio panel, in mono, 8 # bits/sample. # Usage and help functions (keep this up-to-date if you change the program!) def usage(): print 'Usage: Vrec [options] [moviefile [audiofile]]' print print 'Options:' print '-a : record audio as well' print '-q queuesize : set the capture queue size (default 2)' print '-r rate : capture 1 out of every "rate" frames', \ '(default and min 2)' print '-w width : initial window width', \ '(default 256, use 0 for interactive placement)' print '-n : Don\'t write to file, only timing info' print '-d : drop fields if needed' print '-g bits : greyscale (2, 4 or 8 bits)' print '-G : 2-bit greyscale dithered' print '-m : monochrome dithered' print '-M value : monochrome thresholded with value' print '-f : Capture fields (in stead of frames)' print '-P frames : preallocate space for "frames" frames' print 'moviefile : here goes the movie data (default film.video)' print 'audiofile : with -a, here goes the audio data', \ '(default film.aiff)'
#! /usr/bin/env python # Capture a CMIF movie using the Indigo video library and board in burst mode # User interface: # # Start the application. Resize the window to the desired movie size. # Press the left mouse button to start recording, release it to end # recording. You can record as many times as you wish, but each time # you overwrite the output file(s), so only the last recording is # kept. # # Press ESC or select the window manager Quit or Close window option # to quit. If you quit before recording anything, the output file(s) # are not touched. import sys sys.path.append('/ufs/guido/src/video') import sv, SV import VFile import gl, GL, DEVICE import al, AL import time import posix import getopt import string import imageop import sgi # Usage and help functions (keep this up-to-date if you change the program!) def usage(): print 'Usage: Vrecb [options] [moviefile [audiofile]]' print