8 # Determine maximum window size based on signal standard
9 param
= [SV
.BROADCAST
, 0]
11 if param
[1] == SV
.PAL
:
14 elif param
[1] == SV
.NTSC
:
18 print 'Unknown video standard', param
[1]
21 # Initially all windows are half size
22 grabwidth
, grabheight
= width
/2, height
/2
26 gl
.prefsize(grabwidth
, grabheight
)
27 still_win
= gl
.winopen('Grabbed frame')
28 gl
.keepaspect(width
, height
)
29 gl
.maxsize(width
, height
)
34 gl
.pixmode(GL
.PM_SIZE
, 8)
38 gl
.prefsize(grabwidth
, grabheight
)
39 live_win
= gl
.winopen('Live video')
40 gl
.keepaspect(width
, height
)
41 gl
.maxsize(width
, height
)
45 v
.SetSize(gl
.getsize())
46 v
.BindGLWindow(live_win
, SV
.IN_REPLACE
)
48 print 'Use leftmouse to grab frame'
50 gl
.qdevice(DEVICE
.LEFTMOUSE
)
51 gl
.qdevice(DEVICE
.WINQUIT
)
52 gl
.qdevice(DEVICE
.WINSHUT
)
53 gl
.qdevice(DEVICE
.ESCKEY
)
57 if dev
== DEVICE
.LEFTMOUSE
and val
== 0:
58 w
, h
, fields
= v
.CaptureOneFrame(SV
.RGB8_FRAMES
, \
59 grabwidth
, grabheight
)
60 frame
= sv
.InterleaveFields(1, fields
, w
, h
)
62 gl
.lrectwrite(0, 0, w
- 1, h
- 1, frame
)
64 if dev
in (DEVICE
.ESCKEY
, DEVICE
.WINQUIT
, DEVICE
.WINSHUT
):
67 gl
.winclose(still_win
)
69 if dev
== DEVICE
.REDRAW
and val
== still_win
:
73 grabwidth
, grabheight
= gl
.getsize()
75 gl
.lrectwrite(0, 0, w
- 1, h
- 1, frame
)
77 if dev
== DEVICE
.REDRAW
and val
== live_win
:
78 v
.SetSize(gl
.getsize())
79 v
.BindGLWindow(live_win
, SV
.IN_REPLACE
)