8 def __init__(self
, filename
, title
, *args
):
10 self
.vin
= VFile
.VinFile(filename
)
11 except (EOFError, VFile
.Error
):
12 raise IOError, 'bad video input file'
15 title
= os
.path
.split(filename
)[1]
16 self
.filename
= filename
18 self
.qsize
= len(self
.vin
.index
)
20 gl
.prefsize(self
.vin
.width
, self
.vin
.height
)
34 return self
.vin
.getinfo()
41 self
.vin
.initcolormap()
47 gl
.prefsize(self
.vin
.width
, self
.vin
.height
)
48 self
.wid
= gl
.winopen(self
.title
)
50 self
.vin
.initcolormap()
52 if self
.qindex
>= self
.qsize
:
55 dt
, d
, cd
= self
.vin
.getrandomframe(self
.qindex
)
56 self
.vin
.showframe(d
, cd
)
58 def redraw(self
, wid
):
59 if wid
== self
.wid
>= 0:
66 if self
.qindex
>= self
.qsize
:
70 self
.vin
.getrandomframeheader(self
.qindex
-1)
73 t
, data
, cdata
= self
.vin
.getrandomframe(self
.qindex
)
74 self
.qindex
= self
.qindex
+ 1
75 return t
-prevt
, data
, cdata
80 self
.qindex
= self
.qindex
- 1
84 if not 0 <= i
<= self
.qsize
:
93 return self
.qindex
, self
.qsize
- self
.qindex
96 return 0, self
.qindex
, self
.qsize
101 def __init__(self
, filename
, title
, qsize
):
103 self
.vout
= VFile
.VoutFile(filename
)
104 except (EOFError, VFile
.Error
):
105 raise IOError, 'bad video output file'
107 title
= os
.path
.split(filename
)[1]
108 self
.filename
= filename
120 gl
.winclose(self
.wid
)
123 info
= self
.vout
.getinfo()
125 self
.vout
= VFile
.VoutFile(self
.filename
)
126 self
.vout
.setinfo(info
)
130 return self
.vout
.getinfo()
132 def setinfo(self
, info
):
133 if info
== self
.getinfo(): return # No change
134 self
.vout
.setinfo(info
)
136 gl
.winclose(self
.wid
)
144 self
.vout
.initcolormap()
152 if self
.written
== 0:
153 self
.vout
.writeheader()
154 dt
, d
, cd
= self
.queue
[0]
155 self
.lastt
= self
.lastt
+ dt
156 self
.vout
.writeframe(self
.lastt
, d
, cd
)
158 self
.written
= self
.written
+ 1
163 gl
.prefsize(self
.vout
.width
, self
.vout
.height
)
164 self
.wid
= gl
.winopen(self
.title
)
166 self
.vout
.initcolormap()
171 dt
, d
, cd
= self
.queue
[-1]
172 self
.vout
.showframe(d
, cd
)
174 def redraw(self
, wid
):
175 if wid
== self
.wid
>= 0:
182 if len(self
.queue
) < 1: return 0
183 self
.spares
.insert(0, self
.queue
[-1])
188 if not self
.spares
: return 0
189 self
.queue
.append(self
.spares
[0])
194 self
.queue
.append(item
)
196 while len(self
.queue
) > self
.qsize
:
201 if not 0 <= i
<= len(self
.queue
) + len(self
.spares
):
203 while i
< len(self
.queue
):
204 if not self
.backup():
206 while i
> len(self
.queue
):
207 if not self
.forward():
215 return self
.written
+ len(self
.queue
)
218 return len(self
.queue
), len(self
.spares
)
222 pos
= first
+ len(self
.queue
)
223 last
= pos
+ len(self
.spares
)
224 return first
, pos
, last
229 a
= InputViewer(sys
.argv
[1], '')
230 b
= OutputViewer(sys
.argv
[2], '')
231 b
.setinfo(a
.getinfo())
245 if a
.backup(): a
.show()