home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-12-17 | 1.9 KB | 82 lines | [TEXT/R*ch] |
- import sys
- import sv, SV
- import gl, GL, DEVICE
- import time
-
- def main():
- v = sv.OpenVideo()
- # Determine maximum window size based on signal standard
- param = [SV.BROADCAST, 0]
- v.GetParam(param)
- if param[1] == SV.PAL:
- width = SV.PAL_XMAX
- height = SV.PAL_YMAX
- elif param[1] == SV.NTSC:
- width = SV.NTSC_XMAX
- height = SV.NTSC_YMAX
- else:
- print 'Unknown video standard', param[1]
- sys.exit(1)
-
- # Initially all windows are half size
- grabwidth, grabheight = width/2, height/2
-
- # Open still window
- gl.foreground()
- gl.prefsize(grabwidth, grabheight)
- still_win = gl.winopen('Grabbed frame')
- gl.keepaspect(width, height)
- gl.maxsize(width, height)
- gl.winconstraints()
- gl.RGBmode()
- gl.gconfig()
- gl.clear()
- gl.pixmode(GL.PM_SIZE, 8)
-
- # Open live window
- gl.foreground()
- gl.prefsize(grabwidth, grabheight)
- live_win = gl.winopen('Live video')
- gl.keepaspect(width, height)
- gl.maxsize(width, height)
- gl.winconstraints()
-
- # Bind live video
- v.SetSize(gl.getsize())
- v.BindGLWindow(live_win, SV.IN_REPLACE)
-
- print 'Use leftmouse to grab frame'
-
- gl.qdevice(DEVICE.LEFTMOUSE)
- gl.qdevice(DEVICE.WINQUIT)
- gl.qdevice(DEVICE.WINSHUT)
- gl.qdevice(DEVICE.ESCKEY)
- frame = None
- while 1:
- dev, val = gl.qread()
- if dev == DEVICE.LEFTMOUSE and val == 0:
- w, h, fields = v.CaptureOneFrame(SV.RGB8_FRAMES, \
- grabwidth, grabheight)
- frame = sv.InterleaveFields(1, fields, w, h)
- gl.winset(still_win)
- gl.lrectwrite(0, 0, w - 1, h - 1, frame)
- gl.winset(live_win)
- if dev in (DEVICE.ESCKEY, DEVICE.WINQUIT, DEVICE.WINSHUT):
- v.CloseVideo()
- gl.winclose(live_win)
- gl.winclose(still_win)
- break
- if dev == DEVICE.REDRAW and val == still_win:
- gl.winset(still_win)
- gl.reshapeviewport()
- gl.clear()
- grabwidth, grabheight = gl.getsize()
- if frame:
- gl.lrectwrite(0, 0, w - 1, h - 1, frame)
- gl.winset(live_win)
- if dev == DEVICE.REDRAW and val == live_win:
- v.SetSize(gl.getsize())
- v.BindGLWindow(live_win, SV.IN_REPLACE)
-
- main()
-