_buffer_size = 0;
_freewheeling = false;
_freewheel_thread_registered = false;
-
- m_meter_thread = 0;
- m_meter_exit = false;
- start_metering_thread();
-
+ m_meter_thread = 0;
+ m_meter_exit = false;
+
if (connect_to_jack (client_name)) {
throw NoBackendAvailable ();
}
+ start_metering_thread();
+
}
AudioEngine::~AudioEngine ()
jack_client_close (_jack);
}
- if(m_meter_thread) {
- g_atomic_int_inc(&m_meter_exit);
- }
+ if(m_meter_thread) {
+ g_atomic_int_inc(&m_meter_exit);
+ }
}
void
}
+
+bool
+AudioEngine::get_sync_offset (jack_nframes_t& offset) const
+{
+ jack_position_t pos;
+
+ (void) jack_transport_query (_jack, &pos);
+
+ if (pos.valid & JackVideoFrameOffset) {
+ offset = pos.video_offset;
+ return true;
+ }
+
+ return false;
+}
+
void
AudioEngine::_jack_timebase_callback (jack_transport_state_t state, jack_nframes_t nframes,
-
- jack_position_t* pos, int new_position, void *arg)
+ jack_position_t* pos, int new_position, void *arg)
{
static_cast<AudioEngine*> (arg)->jack_timebase_callback (state, nframes, pos, new_position);
}
void
AudioEngine::jack_timebase_callback (jack_transport_state_t state, jack_nframes_t nframes,
-
- jack_position_t* pos, int new_position)
+ jack_position_t* pos, int new_position)
{
if (session && session->synced_to_jack()) {
session->jack_timebase_callback (state, nframes, pos, new_position);
int
AudioEngine::_graph_order_callback (void *arg)
{
- static_cast<AudioEngine *>(arg)->GraphReordered (); /* EMIT SIGNAL */
+ static_cast<AudioEngine *>(arg)->GraphReordered (); /* EMIT SIGNAL */
return 0;
}
void
AudioEngine::start_metering_thread ()
{
- if(m_meter_thread == 0) {
- m_meter_thread = Glib::Thread::create (sigc::mem_fun(this, &AudioEngine::meter_thread), false);
- }
+ if(m_meter_thread == 0) {
+ m_meter_thread = Glib::Thread::create (sigc::mem_fun(this, &AudioEngine::meter_thread), false);
+ }
}
void
(*i)->reset ();
if ((*i)->flags() & JackPortIsOutput) {
- (*i)->silence (jack_get_buffer_size (_jack), 0);
+ (*i)->get_buffer().silence (jack_get_buffer_size (_jack), 0);
}
}