Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c17c84f

Browse files
committed
Disconnect from VCR when switching modes.
Wait for VCR ready and set VCR mode to DNR when initializing VCR. Fix type error in getfloat().
1 parent 9f42f4f commit c17c84f

2 files changed

Lines changed: 52 additions & 6 deletions

File tree

Demo/sgi/video/Vb.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,8 @@ def cb_vformat(self, *args):
228228
self.rebindvideo()
229229

230230
def cb_vmode(self, *args):
231+
if self.vcr:
232+
self.vcr = None
231233
self.vmode = self.c_vmode.get_choice()
232234
self.form.freeze_form()
233235
self.g_cont.hide_object()
@@ -433,7 +435,10 @@ def vcr_capture(self):
433435
import VCR
434436
try:
435437
self.vcr = VCR.VCR().init()
438+
self.vcr.wait()
439+
self.vcr.fmmode('dnr')
436440
except VCR.error, msg:
441+
self.vcr = None
437442
self.b_capture.set_button(0)
438443
fl.show_message('VCR error', str(msg), '')
439444
return
@@ -615,7 +620,7 @@ def getfloat(self, field, default):
615620
value = float(eval(field.get_input()))
616621
except:
617622
value = float(default)
618-
field.set_input(value)
623+
field.set_input(`value`)
619624
return value
620625

621626
# Audio stuff

Demo/sgi/video/Vrecb.py

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ def usage():
4848
print '-M value : monochrome tresholded with value'
4949
print '-f : Capture fields (instead of frames)'
5050
print '-n number : Capture this many frames (default 60)'
51+
print '-N memsize : Capture frames fitting in this many kbytes'
5152
print 'moviefile : here goes the movie data (default film.video)'
5253

5354
def help():
@@ -75,10 +76,11 @@ def main():
7576
greybits = 0
7677
monotreshold = -1
7778
fields = 0
78-
number = 60
79+
number = 0
80+
memsize = 0
7981

8082
try:
81-
opts, args = getopt.getopt(sys.argv[1:], 'ar:w:dg:mM:Gfn:')
83+
opts, args = getopt.getopt(sys.argv[1:], 'ar:w:dg:mM:Gfn:N:')
8284
except getopt.error, msg:
8385
sys.stdout = sys.stderr
8486
print 'Error:', msg, '\n'
@@ -117,11 +119,24 @@ def main():
117119
fields = 1
118120
elif opt == '-n':
119121
number = string.atoi(arg)
122+
elif opt == '-N':
123+
memsize = string.atoi(arg)
124+
if 0 < memsize < 1024:
125+
memsize = memsize * 1024
126+
if 0 < memsize < 1024*1024:
127+
memsize = memsize * 1024
128+
print 'memsize', memsize
120129
except string.atoi_error:
121130
sys.stdout = sys.stderr
122131
print 'Option', opt, 'requires integer argument'
123132
sys.exit(2)
124133

134+
if number <> 0 and memsize <> 0:
135+
sys.stderr.write('-n and -N are mutually exclusive\n')
136+
sys.exit(2)
137+
if number == 0 and memsize == 0:
138+
number = 60
139+
125140
if not fields:
126141
print '-f option assumed until somebody fixes it'
127142
fields = 1
@@ -180,7 +195,9 @@ def main():
180195
gl.winconstraints()
181196
x, y = gl.getsize()
182197
print x, 'x', y
183-
198+
if memsize:
199+
number = calcnumber(x, y, grey or mono, memsize)
200+
print number, 'frames'
184201
v.SetSize(x, y)
185202

186203
if drop:
@@ -215,6 +232,9 @@ def main():
215232
# Window resize (or move)
216233
x, y = gl.getsize()
217234
print x, 'x', y
235+
if memsize:
236+
number = calcnumber(x, y, grey or mono, memsize)
237+
print number, 'frames'
218238
v.SetSize(x, y)
219239
v.BindGLWindow(win, SV.IN_REPLACE)
220240
elif dev in (DEVICE.ESCKEY, DEVICE.WINQUIT, DEVICE.WINSHUT):
@@ -224,6 +244,14 @@ def main():
224244
break
225245

226246

247+
def calcnumber(x, y, grey, memsize):
248+
pixels = x*y
249+
pixels = pixels/2 # XXX always assume fields
250+
if grey: n = memsize/pixels
251+
else: n = memsize/(4*pixels)
252+
return max(1, n)
253+
254+
227255
# Record until the mouse is released (or any other GL event)
228256
# XXX audio not yet supported
229257

@@ -318,11 +346,22 @@ def record(v, info, filename, audiofilename, \
318346
nskipped = 0
319347
realframeno = 0
320348
tpf = 1000 / 50.0 #XXXX
349+
# Trying to find the pattern in frame skipping
350+
okstretch = 0
351+
skipstretch = 0
321352
for frameno in range(0, number*2):
322353
if frameno <> 0 and \
323354
bitvec[frameno] == bitvec[frameno-1]:
324355
nskipped = nskipped + 1
356+
if okstretch:
357+
print okstretch, 'ok',
358+
okstretch = 0
359+
skipstretch = skipstretch + 1
325360
continue
361+
if skipstretch:
362+
print skipstretch, 'skipped'
363+
skipstretch = 0
364+
okstretch = okstretch + 1
326365
#
327366
# Save field.
328367
# XXXX Works only for fields and top-to-bottom
@@ -337,9 +376,11 @@ def record(v, info, filename, audiofilename, \
337376
elif mono:
338377
field = imageop.dither2mono( \
339378
field, len(field), 1)
340-
vout.writeframe(int(realframeno*tpf), field, None)
341379
realframeno = realframeno + 1
342-
print 'Skipped',nskipped,'duplicate frames'
380+
vout.writeframe(int(realframeno*tpf), field, None)
381+
print okstretch, 'ok',
382+
print skipstretch, 'skipped'
383+
print 'Skipped', nskipped, 'duplicate frames'
343384
vout.close()
344385

345386
gl.wintitle('(done) ' + filename)

0 commit comments

Comments
 (0)