#include "pbd/pthread_utils.h"
#include "ardour/debug.h"
+#include "ardour/profile.h"
#include "ardour/slave.h"
#include "ardour/session.h"
#include "ardour/audioengine.h"
#include "ardour/audio_port.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace std;
using namespace ARDOUR;
LTC_Slave::LTC_Slave (Session& s)
: session (s)
{
- frames_per_ltc_frame = session.frames_per_timecode_frame();
+ frames_per_ltc_frame = session.samples_per_timecode_frame();
timecode.rate = session.timecode_frames_per_second();
timecode.drop = session.timecode_drop_frames();
ltc_speed = 0;
engine_dll_initstate = 0;
sync_lock_broken = false;
+
+ ActiveChanged (false); /* EMIT SIGNAL */
}
void
ltc_frame_increment(&frame.ltc, fps_i, tv_standard, 0);
ltc_frame_to_time(&stime, &frame.ltc, 0);
transport_direction = 1;
- frame.off_start -= ltc_frame_alignment(session.frames_per_timecode_frame(), tv_standard);
- frame.off_end -= ltc_frame_alignment(session.frames_per_timecode_frame(), tv_standard);
+ frame.off_start -= ltc_frame_alignment(session.samples_per_timecode_frame(), tv_standard);
+ frame.off_end -= ltc_frame_alignment(session.samples_per_timecode_frame(), tv_standard);
} else {
ltc_frame_decrement(&frame.ltc, fps_i, tv_standard, 0);
int off = frame.off_end - frame.off_start;
- frame.off_start += off - ltc_frame_alignment(session.frames_per_timecode_frame(), tv_standard);
- frame.off_end += off - ltc_frame_alignment(session.frames_per_timecode_frame(), tv_standard);
+ frame.off_start += off - ltc_frame_alignment(session.samples_per_timecode_frame(), tv_standard);
+ frame.off_end += off - ltc_frame_alignment(session.samples_per_timecode_frame(), tv_standard);
transport_direction = -1;
}
if (last_timestamp == 0) {
engine_dll_initstate = 0;
if (delayedlocked < 10) ++delayedlocked;
- }
- else if (engine_dll_initstate != transport_direction && ltc_speed != 0) {
+ } else if (engine_dll_initstate != transport_direction && ltc_speed != 0) {
+
+ ActiveChanged (true); /* EMIT SIGNAL */
+
engine_dll_initstate = transport_direction;
init_engine_dll(last_ltc_frame + rint(ltc_speed * double(2 * nframes + now - last_timestamp)),
session.engine().samples_per_cycle());
reset();
speed = 0;
pos = session.transport_frame();
+ ActiveChanged (false); /* EMIT SIGNAL */
return true;
}
speed = 1.0;
}
- if (speed != 0 && delayedlocked == 0 && fabsf(speed) != 1.0) {
+ if (speed != 0 && delayedlocked == 0 && fabs(speed) != 1.0) {
sync_lock_broken = true;
DEBUG_TRACE (DEBUG::LTC, string_compose ("LTC speed not locked %1 %2\n", speed, ltc_speed));
}
} else {
snprintf(delta, sizeof(delta), "\u0394<span foreground=\"%s\" face=\"monospace\" >%s%s%lld</span>sm",
sync_lock_broken ? "red" : "green",
- LEADINGZERO(llabs(current_delta)), PLUSMINUS(-current_delta), llabs(current_delta));
+ LEADINGZERO(::llabs(current_delta)), PLUSMINUS(-current_delta), ::llabs(current_delta));
}
return std::string(delta);
}