Lines Matching defs:mtc

91 struct mtc mtc_array[1] = {
223 mtc_midi_qfr(struct mtc *mtc, int delta)
229 mtc->delta += delta * MTC_SEC;
230 qfrlen = mtc->dev->rate * (MTC_SEC / (4 * mtc->fps));
231 while (mtc->delta >= qfrlen) {
232 switch (mtc->qfr) {
234 data = mtc->fr & 0xf;
237 data = mtc->fr >> 4;
240 data = mtc->sec & 0xf;
243 data = mtc->sec >> 4;
246 data = mtc->min & 0xf;
249 data = mtc->min >> 4;
252 data = mtc->hr & 0xf;
255 data = (mtc->hr >> 4) | (mtc->fps_id << 1);
259 mtc->fr += 2;
260 if (mtc->fr < mtc->fps)
262 mtc->fr -= mtc->fps;
263 mtc->sec++;
264 if (mtc->sec < 60)
266 mtc->sec = 0;
267 mtc->min++;
268 if (mtc->min < 60)
270 mtc->min = 0;
271 mtc->hr++;
272 if (mtc->hr < 24)
274 mtc->hr = 0;
281 buf[1] = (mtc->qfr << 4) | data;
282 mtc->qfr++;
283 mtc->qfr &= 7;
284 dev_midi_send(mtc->dev, buf, 2);
285 mtc->delta -= qfrlen;
293 mtc_midi_full(struct mtc *mtc)
298 mtc->delta = -MTC_SEC * (int)mtc->dev->bufsz;
299 if (mtc->dev->rate % (30 * 4 * mtc->dev->round) == 0) {
300 mtc->fps_id = MTC_FPS_30;
301 mtc->fps = 30;
302 } else if (mtc->dev->rate % (25 * 4 * mtc->dev->round) == 0) {
303 mtc->fps_id = MTC_FPS_25;
304 mtc->fps = 25;
306 mtc->fps_id = MTC_FPS_24;
307 mtc->fps = 24;
311 dev_log(mtc->dev);
312 log_puts(": mtc full frame at ");
313 log_puti(mtc->delta);
315 log_puti(mtc->fps);
319 fps = mtc->fps;
320 mtc->hr = (mtc->origin / (MTC_SEC * 3600)) % 24;
321 mtc->min = (mtc->origin / (MTC_SEC * 60)) % 60;
322 mtc->sec = (mtc->origin / (MTC_SEC)) % 60;
323 mtc->fr = (mtc->origin / (MTC_SEC / fps)) % fps;
330 x.u.full.hr = mtc->hr | (mtc->fps_id << 5);
331 x.u.full.min = mtc->min;
332 x.u.full.sec = mtc->sec;
333 x.u.full.fr = mtc->fr;
335 mtc->qfr = 0;
336 dev_midi_send(mtc->dev, (unsigned char *)&x, SYSEX_SIZE(full));
1045 log_puts(", mtc");
1407 mtc_trigger(struct mtc *mtc)
1412 if (mtc->tstate != MTC_START) {
1414 dev_log(mtc->dev);
1421 if (s->opt == NULL || s->opt->mtc != mtc)
1433 if (!dev_ref(mtc->dev))
1437 if (s->opt == NULL || s->opt->mtc != mtc)
1442 mtc->tstate = MTC_RUN;
1443 mtc_midi_full(mtc);
1444 dev_wakeup(mtc->dev);
1451 mtc_start(struct mtc *mtc)
1453 if (mtc->tstate == MTC_STOP) {
1454 mtc->tstate = MTC_START;
1455 mtc_trigger(mtc);
1459 dev_log(mtc->dev);
1470 mtc_stop(struct mtc *mtc)
1472 switch (mtc->tstate) {
1474 mtc->tstate = MTC_STOP;
1477 mtc->tstate = MTC_STOP;
1478 dev_unref(mtc->dev);
1483 dev_log(mtc->dev);
1495 mtc_loc(struct mtc *mtc, unsigned int origin)
1498 dev_log(mtc->dev);
1503 if (mtc->tstate == MTC_RUN)
1504 mtc_stop(mtc);
1505 mtc->origin = origin;
1506 if (mtc->tstate == MTC_RUN)
1507 mtc_start(mtc);
1514 mtc_setdev(struct mtc *mtc, struct dev *d)
1518 if (mtc->dev == d)
1527 if (mtc->tstate == MTC_RUN) {
1528 mtc->delta -= mtc->dev->delta;
1529 dev_unref(mtc->dev);
1532 mtc->dev = d;
1534 if (mtc->tstate == MTC_RUN) {
1535 mtc->delta += mtc->dev->delta;
1536 dev_ref(mtc->dev);
1537 dev_wakeup(mtc->dev);
1542 if (o->mtc == mtc)
1543 opt_setdev(o, mtc->dev);
1796 s->xrun = s->opt->mtc != NULL ? XRUN_SYNC : XRUN_IGNORE;
1993 if (s->opt->mtc == NULL) {
1997 mtc_trigger(s->opt->mtc);