);
}
-int
+void
Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end_frame,
double target_speed, double current_speed,
pframes_t nframes)
Sample *out;
pframes_t txf = 0;
boost::shared_ptr<Port> ltcport = ltc_output_port();
- int ret = -1;
Buffer& buf (ltcport->get_buffer (nframes));
if (!ltc_encoder || !ltc_enc_buf) {
- ret = nframes;
- goto out;
+ return;
}
SyncSource sync_src = Config->get_sync_source();
*/
(config.get_external_sync() && sync_src == MIDIClock)
) {
- ret = nframes;
- goto out;
+ return;
}
out = dynamic_cast<AudioBuffer*>(&buf)->data ();
if (ltc_encoder_reinit(ltc_encoder, nominal_frame_rate(), timecode_to_frames_per_second(cur_timecode), 0)) {
PBD::error << _("LTC encoder: invalid framerate - LTC encoding is disabled for the remainder of this session.") << endmsg;
ltc_tx_cleanup();
- ret = 0;
- goto out;
+ return;
}
ltc_enc_tcformat = cur_timecode;
ltc_tx_reset();
/* LTC is max. 30 fps */
if (timecode_to_frames_per_second(cur_timecode) > 30) {
- ret = nframes;
- goto out;
+ return;
}
// (2) speed & direction
new_ltc_speed = 0;
if (!Config->get_ltc_send_continuously()) {
ltc_speed = new_ltc_speed;
- ret = nframes;
- goto out;
+ return;
}
}
if (fabs(new_ltc_speed) > 10.0) {
DEBUG_TRACE (DEBUG::LTC, "LTC TX2: speed is out of bounds.\n");
ltc_tx_reset();
- ret = nframes;
- goto out;
+ return;
}
if (ltc_speed == 0 && new_ltc_speed != 0) {
memset(out, 0, cyc_off * sizeof(Sample));
} else {
/* resync next cycle */
- memset(out, 0, cyc_off * sizeof(Sample));
- ret = frames;
- goto done;
+ memset(out, 0, nframes * sizeof(Sample));
+ return;
}
ltc_enc_pos = tc_sample_start;
if (txf >= nframes) {
DEBUG_TRACE (DEBUG::LTC, string_compose("LTC TX7 enc: %1 [ %2 / %3 ] byte: %4 spd %5 fpp %6 || nf: %7\n",
ltc_enc_pos, ltc_buf_off, ltc_buf_len, ltc_enc_byte, ltc_speed, nframes, txf));
- ret = nframes;
- goto done;
+ break;
}
ltc_buf_len = 0;
DEBUG_TRACE (DEBUG::LTC, string_compose("LTC TX6.3 encoder error byte %1\n", ltc_enc_byte));
ltc_encoder_buffer_flush(ltc_encoder);
ltc_tx_reset();
- goto out;
+ return;
}
int enc_frames = ltc_encoder_get_buffer(ltc_encoder, &(ltc_enc_buf[ltc_buf_len]));
#ifdef LTC_GEN_FRAMEDBUG
DEBUG_TRACE (DEBUG::LTC, "LTC TX6.3 encoder empty buffer.\n");
ltc_encoder_buffer_flush(ltc_encoder);
ltc_tx_reset();
- goto out;;
+ return;
}
ltc_buf_len += enc_frames;
#endif
}
- done:
dynamic_cast<AudioBuffer*>(&buf)->set_written (true);
- ret = nframes;
-
- out:
- return ret;
+ return;
}