projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Prepare for graceful case-by-case fallback of VST Bypass
[ardour.git]
/
libs
/
ardour
/
ltc_slave.cc
diff --git
a/libs/ardour/ltc_slave.cc
b/libs/ardour/ltc_slave.cc
index c5840f68d4f0ad76a306ce356c8efa53b70aeec2..2501378017d9de198aefcc5032240207dc5c20f5 100644
(file)
--- a/
libs/ardour/ltc_slave.cc
+++ b/
libs/ardour/ltc_slave.cc
@@
-26,12
+26,13
@@
#include "pbd/pthread_utils.h"
#include "ardour/debug.h"
#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 "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;
using namespace std;
using namespace ARDOUR;
@@
-44,7
+45,7
@@
using namespace Timecode;
LTC_Slave::LTC_Slave (Session& s)
: session (s)
{
LTC_Slave::LTC_Slave (Session& s)
: session (s)
{
- frames_per_ltc_frame = session.
fram
es_per_timecode_frame();
+ frames_per_ltc_frame = session.
sampl
es_per_timecode_frame();
timecode.rate = session.timecode_frames_per_second();
timecode.drop = session.timecode_drop_frames();
timecode.rate = session.timecode_frames_per_second();
timecode.drop = session.timecode_drop_frames();
@@
-151,6
+152,8
@@
LTC_Slave::reset()
ltc_speed = 0;
engine_dll_initstate = 0;
sync_lock_broken = false;
ltc_speed = 0;
engine_dll_initstate = 0;
sync_lock_broken = false;
+
+ ActiveChanged (false); /* EMIT SIGNAL */
}
void
}
void
@@
-362,13
+365,13
@@
LTC_Slave::process_ltc(framepos_t const /*now*/)
ltc_frame_increment(&frame.ltc, fps_i, tv_standard, 0);
ltc_frame_to_time(&stime, &frame.ltc, 0);
transport_direction = 1;
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.
fram
es_per_timecode_frame(), tv_standard);
- frame.off_end -= ltc_frame_alignment(session.
fram
es_per_timecode_frame(), tv_standard);
+ frame.off_start -= ltc_frame_alignment(session.
sampl
es_per_timecode_frame(), tv_standard);
+ frame.off_end -= ltc_frame_alignment(session.
sampl
es_per_timecode_frame(), tv_standard);
} else {
ltc_frame_decrement(&frame.ltc, fps_i, tv_standard, 0);
int off = frame.off_end - frame.off_start;
} 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.
fram
es_per_timecode_frame(), tv_standard);
- frame.off_end += off - ltc_frame_alignment(session.
fram
es_per_timecode_frame(), tv_standard);
+ frame.off_start += off - ltc_frame_alignment(session.
sampl
es_per_timecode_frame(), tv_standard);
+ frame.off_end += off - ltc_frame_alignment(session.
sampl
es_per_timecode_frame(), tv_standard);
transport_direction = -1;
}
transport_direction = -1;
}
@@
-443,8
+446,10
@@
LTC_Slave::speed_and_position (double& speed, framepos_t& pos)
if (last_timestamp == 0) {
engine_dll_initstate = 0;
if (delayedlocked < 10) ++delayedlocked;
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());
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());
@@
-488,6
+493,7
@@
LTC_Slave::speed_and_position (double& speed, framepos_t& pos)
reset();
speed = 0;
pos = session.transport_frame();
reset();
speed = 0;
pos = session.transport_frame();
+ ActiveChanged (false); /* EMIT SIGNAL */
return true;
}
return true;
}
@@
-556,7
+562,7
@@
LTC_Slave::speed_and_position (double& speed, framepos_t& pos)
speed = 1.0;
}
speed = 1.0;
}
- if (speed != 0 && delayedlocked == 0 && fabs
f
(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));
}
sync_lock_broken = true;
DEBUG_TRACE (DEBUG::LTC, string_compose ("LTC speed not locked %1 %2\n", speed, ltc_speed));
}
@@
-604,7
+610,7
@@
LTC_Slave::approximate_current_delta() const
} else {
snprintf(delta, sizeof(delta), "\u0394<span foreground=\"%s\" face=\"monospace\" >%s%s%lld</span>sm",
sync_lock_broken ? "red" : "green",
} 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);
}
}
return std::string(delta);
}