|
|
1.1 root 1: #include "hdr.h"
2:
3: static Time clock;
4: extern debug;
5:
6: two(s, a, b)
7: char *s;
8: {
9: cmd(0, s, (char *)0, "%c%c", a, b);
10: }
11:
12: three(s, a, b, c)
13: char *s;
14: {
15: cmd(0, s, (char *)0, "%c%c%c", a, b, c);
16: }
17:
18: four(s, a, b, c, d)
19: char *s;
20: {
21: cmd(0, s, (char *)0, "%c%c%c%c", a, b, c, d);
22: }
23:
24: swait()
25: {
26: if(debug)
27: return;
28: while((status1(2)&2) == 0)
29: sleep(1);
30: }
31:
32: frame(n)
33: {
34: three("playback ff/sel", 0x41, 0x38, n);
35: three("rec ff/sel", 0x41, 0x39, n);
36: }
37:
38: snap(n)
39: {
40: upclock(n);
41: printclock();
42: if(debug)
43: return;
44: while(n-- > 0){
45: two("snap", 0x20, 0x65);
46: while(status1(1)&2)
47: sleep(1);
48: while((status1(0xA)&8) == 0)
49: sleep(1);
50: two("step fwd", 0x20, 0x14);
51: while((status1(0xA)&0x8) == 0)
52: sleep(1);
53: }
54: }
55:
56: cue(t)
57: Time t;
58: {
59: cmd(0, "cue", (char *)0, "%c%c%t%c", 0x25, 0x31, t, 0x01);
60: clock = t;
61: printclock();
62: }
63:
64: prerollt(t)
65: Time t;
66: {
67: cmd(0, "preroll", (char *)0, "%c%c%t%c", 0x44, 0x31, t, 0x01);
68: }
69:
70: loop(t0, t1, fps)
71: Time t0, t1;
72: {
73: int n, n1;
74: double speed, p, p1;
75: extern double log10(), pow();
76:
77: if(fps > 1500) fps = 1500;
78: speed = fps/30.0;
79: n = 32*(2+log10(speed));
80: p = pow(10.,n/32.-2);
81: p1 = pow(10.,(n+1)/32.-2);
82: n1 = 256 * (speed - p) / ( p1 - p );
83: if(n1<0)
84: Fprint(2,"can't happen! loop: fps=%d n=%d n1=%d\n",fps,n,n1);
85: cue(t0);
86: sleep(1);
87: {
88: swait();
89: four("var fwd", 0x21, 0x12, n, n1);
90: while(timecmp(gettime(), t1) < 0)
91: sleep(1);
92: two("stop", 0x20, 0x00);
93: four("var rev", 0x22, 0x22, n, n1);
94: while(timecmp(t0, gettime()) < 0)
95: sleep(1);
96: two("stop", 0x20, 0x00);
97: }
98: }
99:
100: view(t0, t1)
101: Time t0, t1;
102: {
103: int fps=64.;
104:
105: cue(t0);
106: sleep(1);
107: {
108: swait();
109: three("var fwd", 0x21, 0x12, fps);
110: while(timecmp(gettime(), t1) < 0)
111: sleep(1);
112: two("stop", 0x20, 0x00);
113: }
114: cue(t0);
115: sleep(1);
116: }
117:
118: locenable()
119: {
120: if(two("local enable", 0x00, 0x1D) == 0)
121: print("local enabled\n");
122: }
123:
124: insert(t, n)
125: Time t;
126: {
127: two("", 0x40, 0x41); /* AUTO ON */
128: three("", 0x41, 0x30, 0x58); /* INS, SYNC/VIDEO */
129: three("", 0x41, 0x36, 0); /* timer mode to TCR */
130: cmd(0, "", (char *)0, "%c%c%t", 0x44, 0x14, t);
131: taddfr(&t, n);
132: cmd(0, "", (char *)0, "%c%c%t", 0x44, 0x15, t);
133: two("", 0x20, 0x30); /* PREROLL */
134: while((status1(1)&0x20) == 0)
135: ; /* loop until stopped */
136: two("", 0x20, 0x42); /* AUTO EDIT */
137: while((status1(1)&0x20) == 0)
138: ; /* loop until stopped */
139: three("", 0x41, 0x30, 0x00); /* INS, SYNC/VIDEO off */
140: two("", 0x40, 0x40); /* AUTO OFF */
141: }
142:
143: editset(t0, t1, chmask)
144: Time t0, t1;
145: {
146: two("", 0x40, 0x41); /* AUTO ON */
147: three("", 0x41, 0x30, 0x40|chmask); /* INS chmask */
148: three("", 0x41, 0x36, 0); /* timer mode to TCR */
149: cmd(0, "", (char *)0, "%c%c%t", 0x44, 0x14, t0);
150: cmd(0, "", (char *)0, "%c%c%t", 0x44, 0x15, t1);
151: two("", 0x20, 0x30); /* PREROLL */
152: while((status1(1)&0x20) == 0)
153: ; /* loop until stopped */
154: }
155:
156: editgo()
157: {
158: two("", 0x20, 0x42); /* AUTO EDIT */
159: while((status1(1)&0x20) == 0)
160: ; /* loop until stopped */
161: three("", 0x41, 0x30, 0x00); /* INS off */
162: two("", 0x40, 0x40); /* AUTO OFF */
163: }
164:
165: still(t)
166: Time t;
167: {
168: three("still mode", 0x41, 0x3F, 0x01); /* STILL */
169: cue(t);
170: swait();
171: }
172:
173: upclock(n)
174: int n;
175: {
176: /* this won't work if n is big, since Time uses shorts */
177: clock.f += n;
178: while( clock.f >= 30 ){
179: clock.f -= 30;
180: clock.s += 1;
181: }
182: while( clock.s >= 60 ){
183: clock.s -= 60;
184: clock.m += 1;
185: }
186: while( clock.m >= 60 ){
187: clock.m -= 60;
188: clock.h += 1;
189: }
190: }
191:
192: printclock()
193: {
194: Fprint(logfd,"# time ");
195: if( clock.h != 0 )
196: Fprint(logfd,"%d.",clock.h);
197: Fprint(logfd,"%d.%d.%d\n",clock.m,clock.s,clock.f);
198: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.