Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
6e0e668d
Kaydet (Commit)
6e0e668d
authored
Ara 23, 1992
tarafından
Guido van Rossum
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Renamed Vrecc to Vrecb (*b*urst mode capture).
üst
6bc8c7f3
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
281 additions
and
0 deletions
+281
-0
Vrecb.py
Demo/sgi/video/Vrecb.py
+281
-0
No files found.
Demo/sgi/video/Vrecb.py
0 → 100755
Dosyayı görüntüle @
6e0e668d
#! /ufs/guido/bin/sgi/python-405
#! /ufs/guido/bin/sgi/python
# Capture a continuous CMIF movie using the Indigo video library and board
# Usage:
#
# makemovie [-r rate] [-w width] [moviefile]
# Options:
#
# -r rate : capture 1 out of every 'rate' frames (default 1)
# -w width : initial window width (default interactive placement)
# -d : drop fields if needed
# -g bits : greyscale (2, 4 or 8 bits)
# -G : 2-bit greyscale dithered
# -m : monochrome dithered
# -M value : monochrome tresholded with value
# -f : Capture fields (in stead of frames)
# -n number : Capture 'number' fields (default 60)
#
# moviefile : here goes the movie data (default film.video);
# the format is documented in cmif-film.ms
# User interface:
#
# Start the application. Resize the window to the desired movie size.
# Press the left mouse button to start recording, release it to end
# recording. You can record as many times as you wish, but each time
# you overwrite the output file(s), so only the last recording is
# kept.
#
# Press ESC or select the window manager Quit or Close window option
# to quit. If you quit before recording anything, the output file(s)
# are not touched.
import
sys
sys
.
path
.
append
(
'/ufs/guido/src/video'
)
import
sv
,
SV
import
VFile
import
gl
,
GL
,
DEVICE
import
al
,
AL
import
time
import
posix
import
getopt
import
string
import
imageop
import
sgi
# Main program
def
main
():
format
=
SV
.
RGB8_FRAMES
rate
=
1
width
=
0
drop
=
0
mono
=
0
grey
=
0
greybits
=
0
monotreshold
=
-
1
fields
=
0
number
=
60
opts
,
args
=
getopt
.
getopt
(
sys
.
argv
[
1
:],
'r:w:dg:mM:Gfn:'
)
for
opt
,
arg
in
opts
:
if
opt
==
'-r'
:
rate
=
string
.
atoi
(
arg
)
if
rate
<
2
:
sys
.
stderr
.
write
(
'-r rate must be >= 2
\n
'
)
sys
.
exit
(
2
)
elif
opt
==
'-w'
:
width
=
string
.
atoi
(
arg
)
elif
opt
==
'-d'
:
drop
=
1
elif
opt
==
'-g'
:
grey
=
1
greybits
=
string
.
atoi
(
arg
)
if
not
greybits
in
(
2
,
4
,
8
):
print
'Only 2, 4 or 8 bit greyscale supported'
elif
opt
==
'-G'
:
grey
=
1
greybits
=
-
2
elif
opt
==
'-m'
:
mono
=
1
elif
opt
==
'-M'
:
mono
=
1
monotreshold
=
string
.
atoi
(
arg
)
elif
opt
==
'-f'
:
fields
=
1
elif
opt
==
'-n'
:
number
=
string
.
atoi
(
arg
)
if
args
[
2
:]:
sys
.
stderr
.
write
(
'usage: Vrec [options] [file]
\n
'
)
sys
.
exit
(
2
)
if
args
:
filename
=
args
[
0
]
else
:
filename
=
'film.video'
v
=
sv
.
OpenVideo
()
# Determine maximum window size based on signal standard
param
=
[
SV
.
BROADCAST
,
0
]
v
.
GetParam
(
param
)
if
param
[
1
]
==
SV
.
PAL
:
x
=
SV
.
PAL_XMAX
y
=
SV
.
PAL_YMAX
elif
param
[
1
]
==
SV
.
NTSC
:
x
=
SV
.
NTSC_XMAX
y
=
SV
.
NTSC_YMAX
else
:
print
'Unknown video standard'
,
param
[
1
]
sys
.
exit
(
1
)
gl
.
foreground
()
gl
.
maxsize
(
x
,
y
)
gl
.
keepaspect
(
x
,
y
)
gl
.
stepunit
(
8
,
6
)
if
width
:
gl
.
prefsize
(
width
,
width
*
3
/
4
)
win
=
gl
.
winopen
(
filename
)
if
width
:
gl
.
maxsize
(
x
,
y
)
gl
.
keepaspect
(
x
,
y
)
gl
.
stepunit
(
8
,
6
)
gl
.
winconstraints
()
x
,
y
=
gl
.
getsize
()
print
x
,
'x'
,
y
v
.
SetSize
(
x
,
y
)
if
drop
:
param
=
[
SV
.
FIELDDROP
,
1
,
SV
.
GENLOCK
,
SV
.
GENLOCK_OFF
]
else
:
param
=
[
SV
.
FIELDDROP
,
0
,
SV
.
GENLOCK
,
SV
.
GENLOCK_ON
]
if
mono
or
grey
:
param
=
param
+
[
SV
.
COLOR
,
SV
.
MONO
,
SV
.
INPUT_BYPASS
,
1
]
else
:
param
=
param
+
[
SV
.
COLOR
,
SV
.
DEFAULT_COLOR
,
SV
.
INPUT_BYPASS
,
0
]
v
.
SetParam
(
param
)
v
.
BindGLWindow
(
win
,
SV
.
IN_REPLACE
)
gl
.
qdevice
(
DEVICE
.
LEFTMOUSE
)
gl
.
qdevice
(
DEVICE
.
WINQUIT
)
gl
.
qdevice
(
DEVICE
.
WINSHUT
)
gl
.
qdevice
(
DEVICE
.
ESCKEY
)
print
'Press left mouse to start recording'
while
1
:
dev
,
val
=
gl
.
qread
()
if
dev
==
DEVICE
.
LEFTMOUSE
:
if
val
==
1
:
info
=
format
,
x
,
y
,
number
,
rate
record
(
v
,
info
,
filename
,
mono
,
grey
,
\
greybits
,
monotreshold
,
fields
)
elif
dev
==
DEVICE
.
REDRAW
:
# Window resize (or move)
x
,
y
=
gl
.
getsize
()
print
x
,
'x'
,
y
v
.
SetSize
(
x
,
y
)
v
.
BindGLWindow
(
win
,
SV
.
IN_REPLACE
)
elif
dev
in
(
DEVICE
.
ESCKEY
,
DEVICE
.
WINQUIT
,
DEVICE
.
WINSHUT
):
# Quit
v
.
CloseVideo
()
gl
.
winclose
(
win
)
break
# Record until the mouse is released (or any other GL event)
# XXX audio not yet supported
def
record
(
v
,
info
,
filename
,
mono
,
grey
,
greybits
,
monotreshold
,
fields
):
import
thread
format
,
x
,
y
,
number
,
rate
=
info
fps
=
59.64
# Fields per second
# XXX (Strange: need fps of Indigo monitor, not of PAL or NTSC!)
tpf
=
1000.0
/
fps
# Time per field in msec
#
# Go grab
#
gl
.
wintitle
(
'(rec) '
+
filename
)
try
:
ninfo
,
data
,
bitvec
=
v
.
CaptureBurst
(
info
)
except
sv
.
error
,
arg
:
print
'CaptureBurst failed:'
,
arg
print
'info:'
,
info
gl
.
wintitle
(
filename
)
return
gl
.
wintitle
(
'(save) '
+
filename
)
#
# Check results
#
if
info
<>
ninfo
:
print
'Sorry, format changed.'
print
'Wanted:'
,
info
print
'Got :'
,
ninfo
gl
.
wintitle
(
filename
)
return
# print bitvec
if
x
*
y
*
number
<>
len
(
data
):
print
'Funny data length: wanted'
,
x
,
'*'
,
y
,
'*'
,
number
,
'='
,
\
x
*
y
*
number
,
'got'
,
len
(
data
)
gl
.
wintitle
(
filename
)
return
#
# Save
#
if
filename
:
#
# Construct header and write it
#
vout
=
VFile
.
VoutFile
()
.
init
(
filename
)
if
mono
:
vout
.
format
=
'mono'
elif
grey
and
greybits
==
8
:
vout
.
format
=
'grey'
elif
grey
:
vout
.
format
=
'grey'
+
`abs(greybits)`
else
:
vout
.
format
=
'rgb8'
vout
.
width
=
x
vout
.
height
=
y
if
fields
:
vout
.
packfactor
=
(
1
,
-
2
)
else
:
print
'Sorry, can only save fields at the moment'
gl
.
wintitle
(
filename
)
return
vout
.
writeheader
()
#
# Compute convertor, if needed
#
convertor
=
None
if
grey
:
if
greybits
==
2
:
convertor
=
imageop
.
grey2grey2
elif
greybits
==
4
:
convertor
=
imageop
.
grey2grey4
elif
greybits
==
-
2
:
convertor
=
imageop
.
dither2grey2
fieldsize
=
x
*
y
/
2
nskipped
=
0
realframeno
=
0
tpf
=
1000
/
50.0
#XXXX
for
frameno
in
range
(
0
,
number
*
2
):
if
frameno
<>
0
and
\
bitvec
[
frameno
]
==
bitvec
[
frameno
-
1
]:
nskipped
=
nskipped
+
1
continue
#
# Save field.
# XXXX Works only for fields and top-to-bottom
#
start
=
frameno
*
fieldsize
field
=
data
[
start
:
start
+
fieldsize
]
if
convertor
:
field
=
convertor
(
field
,
x
,
y
)
elif
mono
and
monotreshold
>=
0
:
field
=
imageop
.
grey2mono
(
field
,
x
,
y
,
\
1
,
monotreshold
)
elif
mono
:
field
=
imageop
.
dither2mono
(
field
,
x
,
y
)
vout
.
writeframe
(
int
(
realframeno
*
tpf
),
field
,
None
)
print
'Skipped'
,
nskipped
,
'duplicate frames'
vout
.
close
()
gl
.
wintitle
(
'(done) '
+
filename
)
# Don't forget to call the main program
try
:
main
()
except
KeyboardInterrupt
:
print
'[Interrupt]'
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment