| 
									
										
										
										
											1992-09-03 17:29:03 +00:00
										 |  |  | import sys | 
					
						
							| 
									
										
										
										
											1992-09-03 17:01:36 +00:00
										 |  |  | import sv, SV | 
					
						
							|  |  |  | import gl, GL, DEVICE | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def main(): | 
					
						
							|  |  |  | 	format = SV.RGB8_FRAMES | 
					
						
							|  |  |  | 	requestedwidth = SV.PAL_XMAX | 
					
						
							| 
									
										
										
										
											1992-09-03 17:29:03 +00:00
										 |  |  | 	queuesize = 30 | 
					
						
							|  |  |  | 	if sys.argv[1:]: | 
					
						
							|  |  |  | 		queuesize = eval(sys.argv[1]) | 
					
						
							| 
									
										
										
										
											1992-09-03 17:01:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	v = sv.OpenVideo() | 
					
						
							|  |  |  | 	svci = (format, requestedwidth, 0, queuesize, 0) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1992-09-03 17:29:03 +00:00
										 |  |  | 	go = raw_input('Press return to capture ' + `queuesize` + ' frames: ') | 
					
						
							|  |  |  | 	result = v.CaptureBurst(svci) | 
					
						
							| 
									
										
										
										
											1992-12-14 15:52:05 +00:00
										 |  |  | 	svci, buffer, bitvec = result | 
					
						
							|  |  |  | ##	svci, buffer = result # XXX If bit vector not yet implemented | 
					
						
							| 
									
										
										
										
											1992-09-03 17:29:03 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	print 'Captured', svci[3], 'frames, i.e.', len(buffer)/1024, 'K bytes' | 
					
						
							| 
									
										
										
										
											1992-09-03 17:01:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	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) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1992-09-03 17:29:03 +00:00
										 |  |  | 	print 'Click left mouse for next frame' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1992-09-03 17:01:36 +00:00
										 |  |  | 	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) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | main() |