Disconnect from VCR when switching modes.
Wait for VCR ready and set VCR mode to DNR when initializing VCR. Fix type error in getfloat().
This commit is contained in:
parent
9f42f4fe43
commit
c17c84fbe3
|
@ -228,6 +228,8 @@ class VideoBagOfTricks:
|
|||
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 @@ class VideoBagOfTricks:
|
|||
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 @@ class VideoBagOfTricks:
|
|||
value = float(eval(field.get_input()))
|
||||
except:
|
||||
value = float(default)
|
||||
field.set_input(value)
|
||||
field.set_input(`value`)
|
||||
return value
|
||||
|
||||
# Audio stuff
|
||||
|
|
|
@ -48,6 +48,7 @@ def usage():
|
|||
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 @@ def main():
|
|||
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 @@ def main():
|
|||
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 @@ def main():
|
|||
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 @@ def main():
|
|||
# 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 @@ def main():
|
|||
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 @@ def record(v, info, filename, audiofilename, \
|
|||
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 @@ def record(v, info, filename, audiofilename, \
|
|||
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)
|
||||
|
|
Loading…
Reference in New Issue