Disconnect from VCR when switching modes.
Wait for VCR ready and set VCR mode to DNR when initializing VCR.
Fix type error in getfloat().
diff --git a/Demo/sgi/video/Vb.py b/Demo/sgi/video/Vb.py
index da868f1..e6fecdf 100755
--- a/Demo/sgi/video/Vb.py
+++ b/Demo/sgi/video/Vb.py
@@ -228,6 +228,8 @@
 		self.rebindvideo()
 
 	def cb_vmode(self, *args):
+		if self.vcr:
+			self.vcr = None
 		self.vmode = self.c_vmode.get_choice()
 		self.form.freeze_form()
 		self.g_cont.hide_object()
@@ -433,7 +435,10 @@
 			import VCR
 			try:
 				self.vcr = VCR.VCR().init()
+				self.vcr.wait()
+				self.vcr.fmmode('dnr')
 			except VCR.error, msg:
+				self.vcr = None
 				self.b_capture.set_button(0)
 				fl.show_message('VCR error', str(msg), '')
 				return
@@ -615,7 +620,7 @@
 			value = float(eval(field.get_input()))
 		except:
 			value = float(default)
-		field.set_input(value)
+		field.set_input(`value`)
 		return value
 
 	# Audio stuff
diff --git a/Demo/sgi/video/Vrecb.py b/Demo/sgi/video/Vrecb.py
index ef7bc37..f726fe3 100755
--- a/Demo/sgi/video/Vrecb.py
+++ b/Demo/sgi/video/Vrecb.py
@@ -48,6 +48,7 @@
 	print '-M value      : monochrome tresholded with value'
 	print '-f            : Capture fields (instead of frames)'
 	print '-n number     : Capture this many frames (default 60)'
+	print '-N memsize    : Capture frames fitting in this many kbytes'
 	print 'moviefile     : here goes the movie data (default film.video)'
 
 def help():
@@ -75,10 +76,11 @@
 	greybits = 0
 	monotreshold = -1
 	fields = 0
-	number = 60
+	number = 0
+	memsize = 0
 
 	try:
-		opts, args = getopt.getopt(sys.argv[1:], 'ar:w:dg:mM:Gfn:')
+		opts, args = getopt.getopt(sys.argv[1:], 'ar:w:dg:mM:Gfn:N:')
 	except getopt.error, msg:
 		sys.stdout = sys.stderr
 		print 'Error:', msg, '\n'
@@ -117,11 +119,24 @@
 				fields = 1
 			elif opt == '-n':
 				number = string.atoi(arg)
+			elif opt == '-N':
+				memsize = string.atoi(arg)
+				if 0 < memsize < 1024:
+					memsize = memsize * 1024
+				if 0 < memsize < 1024*1024:
+					memsize = memsize * 1024
+				print 'memsize', memsize
 	except string.atoi_error:
 		sys.stdout = sys.stderr
 		print 'Option', opt, 'requires integer argument'
 		sys.exit(2)
 
+	if number <> 0 and memsize <> 0:
+		sys.stderr.write('-n and -N are mutually exclusive\n')
+		sys.exit(2)
+	if number == 0 and memsize == 0:
+		number = 60
+
 	if not fields:
 		print '-f option assumed until somebody fixes it'
 		fields = 1
@@ -180,7 +195,9 @@
 		gl.winconstraints()
 	x, y = gl.getsize()
 	print x, 'x', y
-
+	if memsize:
+		number = calcnumber(x, y, grey or mono, memsize)
+		print number, 'frames'
 	v.SetSize(x, y)
 
 	if drop:
@@ -215,6 +232,9 @@
 			# Window resize (or move)
 			x, y = gl.getsize()
 			print x, 'x', y
+			if memsize:
+			    number = calcnumber(x, y, grey or mono, memsize)
+			    print number, 'frames'
 			v.SetSize(x, y)
 			v.BindGLWindow(win, SV.IN_REPLACE)
 		elif dev in (DEVICE.ESCKEY, DEVICE.WINQUIT, DEVICE.WINSHUT):
@@ -224,6 +244,14 @@
 			break
 
 
+def calcnumber(x, y, grey, memsize):
+	pixels = x*y
+	pixels = pixels/2		# XXX always assume fields
+	if grey: n = memsize/pixels
+	else: n = memsize/(4*pixels)
+	return max(1, n)
+
+
 # Record until the mouse is released (or any other GL event)
 # XXX audio not yet supported
 
@@ -318,11 +346,22 @@
 		nskipped = 0
 		realframeno = 0
 		tpf = 1000 / 50.0     #XXXX
+		# Trying to find the pattern in frame skipping
+		okstretch = 0
+		skipstretch = 0
 		for frameno in range(0, number*2):
 			if frameno <> 0 and \
 				  bitvec[frameno] == bitvec[frameno-1]:
 				nskipped = nskipped + 1
+				if okstretch:
+					print okstretch, 'ok',
+					okstretch = 0
+				skipstretch = skipstretch + 1
 				continue
+			if skipstretch:
+				print skipstretch, 'skipped'
+				skipstretch = 0
+			okstretch = okstretch + 1
 			#
 			# Save field.
 			# XXXX Works only for fields and top-to-bottom
@@ -337,9 +376,11 @@
 			elif mono:
 				field = imageop.dither2mono( \
 					  field, len(field), 1)
-			vout.writeframe(int(realframeno*tpf), field, None)
 			realframeno = realframeno + 1
-		print 'Skipped',nskipped,'duplicate frames'
+			vout.writeframe(int(realframeno*tpf), field, None)
+		print okstretch, 'ok',
+		print skipstretch, 'skipped'
+		print 'Skipped', nskipped, 'duplicate frames'
 		vout.close()
 			
 	gl.wintitle('(done) ' + filename)