#include "pbd/file_utils.h"
#include "pbd/convert.h"
#include "gui_thread.h"
-#include "ardour_ui.h"
+#include "timers.h"
#include "utils.h"
#include <stdio.h>
#include "editor.h"
#include "video_monitor.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace std;
using namespace PBD;
if (!is_started()) return;
manually_seeked_frame = 0;
osdmode = 10; // 1: frameno, 2: timecode, 8: box
- sync_by_manual_seek = false;
starting = 15;
process->write_to_stdin("load " + filename + "\n");
process->write_to_stdin("set fps -1\n");
process->write_to_stdin("window ontop on\n");
process->write_to_stdin("set seekmode 1\n");
/* override bitwise flags -- see xjadeo.h
- * 0x01 : ignore 'q', ESC / quite
- * 0x02 : ignore "window closed by WM" / quit
- * 0x04 : (osx only) menu-exit / quit
- * 0x08 : ignore mouse-button 1 -- resize
- * 0x10 : no A/V offset
- * 0x20 : don't use jack-session
- * 0x40 : no jack-transport control play/pause/rewind
+ * 0x0001 : ignore 'q', ESC / quit
+ * 0x0002 : ignore "window closed by WM" / quit
+ * 0x0004 : (osx only) menu-exit / quit
+ * 0x0008 : ignore mouse-button 1 -- resize
+ * 0x0010 : no A/V offset control with keyboard
+ * 0x0020 : don't use jack-session
+ * 0x0040 : disable jack transport control
+ * 0x0080 : disallow sync source change (OSX menu)
+ * 0x0100 : disallow file open (OSX menu, X11 DnD)
*/
- process->write_to_stdin("set override 120\n");
+ process->write_to_stdin("set override 504\n");
process->write_to_stdin("notify keyboard\n");
process->write_to_stdin("notify settings\n");
process->write_to_stdin("window letterbox on\n");
querystate();
state_clk_divide = 0;
/* TODO once every two second or so -- state_clk_divide hack below */
- state_connection = ARDOUR_UI::RapidScreenUpdate.connect (sigc::mem_fun (*this, &VideoMonitor::querystate));
+ state_connection = Timers::rapid_connect (sigc::mem_fun (*this, &VideoMonitor::querystate));
}
+ sync_by_manual_seek = true;
+ clock_connection = Timers::fps_connect (sigc::mem_fun (*this, &VideoMonitor::srsupdate));
xjadeo_sync_setup();
}
void
VideoMonitor::forward_keyevent (unsigned int keyval)
{
- Editor* ed = dynamic_cast<Editor*>(&PublicEditor::instance());
- if (!ed) return;
- emulate_key_event(ed, keyval);
+ emulate_key_event (keyval);
}
void
for(XJSettings::const_iterator it = xjadeo_settings.begin(); it != xjadeo_settings.end(); ++it) {
XMLNode* child = node->add_child (X_("XJSetting"));
- child->add_property (X_("k"), it->first);
- child->add_property (X_("v"), it->second);
+ child->set_property (X_("k"), it->first);
+ child->set_property (X_("v"), it->second);
}
}
{
SessionHandlePtr::set_session (s);
if (!_session) { return; }
+ ARDOUR::Config->ParameterChanged.connect (*this, invalidator (*this), ui_bind (&VideoMonitor::parameter_changed, this, _1), gui_context());
_session->config.ParameterChanged.connect (*this, invalidator (*this), ui_bind (&VideoMonitor::parameter_changed, this, _1), gui_context());
XMLNode* node = _session->extra_xml (X_("XJSettings"));
if (!node) { return;}
return (xjadeo_settings[k]);
}
-#define NO_OFFSET (1<<31) //< skip setting or modifying offset -- TODO check ARDOUR::frameoffset_t max value.
+#define NO_OFFSET (Temporal::max_samplepos) //< skip setting or modifying offset
void
VideoMonitor::srsupdate ()
{
if (!_session) { return; }
if (editor->dragging_playhead()) { return ;}
- manual_seek(_session->audible_frame(), false, NO_OFFSET);
+ manual_seek(_session->audible_sample(), false, NO_OFFSET);
}
void
-VideoMonitor::set_offset (ARDOUR::frameoffset_t offset)
+VideoMonitor::set_offset (ARDOUR::sampleoffset_t offset)
{
if (!is_started()) { return; }
if (!_session) { return; }
if (offset == NO_OFFSET ) { return; }
- framecnt_t video_frame_offset;
- framecnt_t audio_sample_rate;
+ samplecnt_t video_frame_offset;
+ samplecnt_t audio_sample_rate;
if (_session->config.get_videotimeline_pullup()) {
- audio_sample_rate = _session->frame_rate();
+ audio_sample_rate = _session->sample_rate();
} else {
- audio_sample_rate = _session->nominal_frame_rate();
+ audio_sample_rate = _session->nominal_sample_rate();
}
- /* Note: pull-up/down are applied here: frame_rate() vs. nominal_frame_rate() */
+ /* Note: pull-up/down are applied here: sample_rate() vs. nominal_sample_rate() */
if (_session->config.get_use_video_file_fps()) {
video_frame_offset = floor(offset * fps / audio_sample_rate);
} else {
}
void
-VideoMonitor::manual_seek (framepos_t when, bool /*force*/, ARDOUR::frameoffset_t offset)
+VideoMonitor::manual_seek (samplepos_t when, bool /*force*/, ARDOUR::sampleoffset_t offset)
{
if (!is_started()) { return; }
if (!_session) { return; }
- framecnt_t video_frame;
- framecnt_t audio_sample_rate;
+ samplecnt_t video_frame;
+ samplecnt_t audio_sample_rate;
if (_session->config.get_videotimeline_pullup()) {
- audio_sample_rate = _session->frame_rate();
+ audio_sample_rate = _session->sample_rate();
} else {
- audio_sample_rate = _session->nominal_frame_rate();
+ audio_sample_rate = _session->nominal_sample_rate();
}
- /* Note: pull-up/down are applied here: frame_rate() vs. nominal_frame_rate() */
+ /* Note: pull-up/down are applied here: sample_rate() vs. nominal_sample_rate() */
if (_session->config.get_use_video_file_fps()) {
video_frame = floor(when * fps / audio_sample_rate);
} else {
process->write_to_stdin("jack connect\n");
} else {
process->write_to_stdin("jack disconnect\n");
- clock_connection = ARDOUR_UI::SuperRapidScreenUpdate.connect (sigc::mem_fun (*this, &VideoMonitor::srsupdate));
+ clock_connection = Timers::fps_connect (sigc::mem_fun (*this, &VideoMonitor::srsupdate));
}
sync_by_manual_seek = my_manual_seek;
}