mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-16 11:46:25 +01:00
prepare saving video-export settings.
* migrate dialog from Editor to UI. * make it a WM proxied window * prepare applying state after construction..
This commit is contained in:
parent
c0411de949
commit
c90400364a
9 changed files with 131 additions and 90 deletions
|
|
@ -105,6 +105,8 @@ typedef uint64_t microseconds_t;
|
||||||
#include "big_clock_window.h"
|
#include "big_clock_window.h"
|
||||||
#include "bundle_manager.h"
|
#include "bundle_manager.h"
|
||||||
#include "engine_dialog.h"
|
#include "engine_dialog.h"
|
||||||
|
#include "export_video_dialog.h"
|
||||||
|
#include "export_video_infobox.h"
|
||||||
#include "gain_meter.h"
|
#include "gain_meter.h"
|
||||||
#include "global_port_matrix.h"
|
#include "global_port_matrix.h"
|
||||||
#include "gui_object.h"
|
#include "gui_object.h"
|
||||||
|
|
@ -206,6 +208,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
|
||||||
, location_ui (X_("locations"), _("Locations"))
|
, location_ui (X_("locations"), _("Locations"))
|
||||||
, route_params (X_("inspector"), _("Tracks and Busses"))
|
, route_params (X_("inspector"), _("Tracks and Busses"))
|
||||||
, audio_midi_setup (X_("audio-midi-setup"), _("Audio/MIDI Setup"))
|
, audio_midi_setup (X_("audio-midi-setup"), _("Audio/MIDI Setup"))
|
||||||
|
, export_video_dialog (X_("video-export"), _("Video Export Dialog"))
|
||||||
, session_option_editor (X_("session-options-editor"), _("Properties"), boost::bind (&ARDOUR_UI::create_session_option_editor, this))
|
, session_option_editor (X_("session-options-editor"), _("Properties"), boost::bind (&ARDOUR_UI::create_session_option_editor, this))
|
||||||
, add_video_dialog (X_("add-video"), _("Add Tracks/Busses"), boost::bind (&ARDOUR_UI::create_add_video_dialog, this))
|
, add_video_dialog (X_("add-video"), _("Add Tracks/Busses"), boost::bind (&ARDOUR_UI::create_add_video_dialog, this))
|
||||||
, bundle_manager (X_("bundle-manager"), _("Bundle Manager"), boost::bind (&ARDOUR_UI::create_bundle_manager, this))
|
, bundle_manager (X_("bundle-manager"), _("Bundle Manager"), boost::bind (&ARDOUR_UI::create_bundle_manager, this))
|
||||||
|
|
@ -358,6 +361,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
|
||||||
big_clock_window.set_state (*ui_xml);
|
big_clock_window.set_state (*ui_xml);
|
||||||
audio_port_matrix.set_state (*ui_xml);
|
audio_port_matrix.set_state (*ui_xml);
|
||||||
midi_port_matrix.set_state (*ui_xml);
|
midi_port_matrix.set_state (*ui_xml);
|
||||||
|
export_video_dialog.set_state (*ui_xml);
|
||||||
}
|
}
|
||||||
|
|
||||||
WM::Manager::instance().register_window (&key_editor);
|
WM::Manager::instance().register_window (&key_editor);
|
||||||
|
|
@ -369,6 +373,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
|
||||||
WM::Manager::instance().register_window (&add_video_dialog);
|
WM::Manager::instance().register_window (&add_video_dialog);
|
||||||
WM::Manager::instance().register_window (&route_params);
|
WM::Manager::instance().register_window (&route_params);
|
||||||
WM::Manager::instance().register_window (&audio_midi_setup);
|
WM::Manager::instance().register_window (&audio_midi_setup);
|
||||||
|
WM::Manager::instance().register_window (&export_video_dialog);
|
||||||
WM::Manager::instance().register_window (&bundle_manager);
|
WM::Manager::instance().register_window (&bundle_manager);
|
||||||
WM::Manager::instance().register_window (&location_ui);
|
WM::Manager::instance().register_window (&location_ui);
|
||||||
WM::Manager::instance().register_window (&big_clock_window);
|
WM::Manager::instance().register_window (&big_clock_window);
|
||||||
|
|
@ -2439,6 +2444,10 @@ ARDOUR_UI::save_state (const string & name, bool switch_to_it)
|
||||||
|
|
||||||
_session->add_extra_xml (*node);
|
_session->add_extra_xml (*node);
|
||||||
|
|
||||||
|
if (export_video_dialog) {
|
||||||
|
_session->add_extra_xml (export_video_dialog->get_state());
|
||||||
|
}
|
||||||
|
|
||||||
save_state_canfail (name, switch_to_it);
|
save_state_canfail (name, switch_to_it);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3821,6 +3830,8 @@ ARDOUR_UI::remove_video ()
|
||||||
_session->add_extra_xml(*node);
|
_session->add_extra_xml(*node);
|
||||||
node = new XMLNode(X_("Videomonitor"));
|
node = new XMLNode(X_("Videomonitor"));
|
||||||
_session->add_extra_xml(*node);
|
_session->add_extra_xml(*node);
|
||||||
|
node = new XMLNode(X_("Videoexport"));
|
||||||
|
_session->add_extra_xml(*node);
|
||||||
stop_video_server();
|
stop_video_server();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3835,6 +3846,29 @@ ARDOUR_UI::flush_videotimeline_cache (bool localcacheonly)
|
||||||
editor->queue_visual_videotimeline_update();
|
editor->queue_visual_videotimeline_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ARDOUR_UI::export_video (bool range)
|
||||||
|
{
|
||||||
|
if (ARDOUR::Config->get_show_video_export_info()) {
|
||||||
|
ExportVideoInfobox infobox (_session);
|
||||||
|
Gtk::ResponseType rv = (Gtk::ResponseType) infobox.run();
|
||||||
|
if (infobox.show_again()) {
|
||||||
|
ARDOUR::Config->set_show_video_export_info(false);
|
||||||
|
}
|
||||||
|
switch (rv) {
|
||||||
|
case GTK_RESPONSE_YES:
|
||||||
|
PBD::open_uri (ARDOUR::Config->get_reference_manual_url() + "/video-timeline/operations/#export");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export_video_dialog->set_session (_session);
|
||||||
|
export_video_dialog->apply_state(editor->get_selection().time, range);
|
||||||
|
export_video_dialog->run ();
|
||||||
|
export_video_dialog->hide ();
|
||||||
|
}
|
||||||
|
|
||||||
XMLNode*
|
XMLNode*
|
||||||
ARDOUR_UI::mixer_settings () const
|
ARDOUR_UI::mixer_settings () const
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@
|
||||||
#include "ardour_window.h"
|
#include "ardour_window.h"
|
||||||
#include "editing.h"
|
#include "editing.h"
|
||||||
#include "engine_dialog.h"
|
#include "engine_dialog.h"
|
||||||
|
#include "export_video_dialog.h"
|
||||||
#include "meterbridge.h"
|
#include "meterbridge.h"
|
||||||
#include "ui_config.h"
|
#include "ui_config.h"
|
||||||
#include "enums.h"
|
#include "enums.h"
|
||||||
|
|
@ -243,6 +244,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
|
||||||
bool start_video_server (Gtk::Window* float_window, bool popup_msg);
|
bool start_video_server (Gtk::Window* float_window, bool popup_msg);
|
||||||
void stop_video_server (bool ask_confirm=false);
|
void stop_video_server (bool ask_confirm=false);
|
||||||
void flush_videotimeline_cache (bool localcacheonly=false);
|
void flush_videotimeline_cache (bool localcacheonly=false);
|
||||||
|
void export_video (bool range = false);
|
||||||
|
|
||||||
void session_add_audio_track (
|
void session_add_audio_track (
|
||||||
int input_channels,
|
int input_channels,
|
||||||
|
|
@ -624,6 +626,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
|
||||||
WM::Proxy<LocationUIWindow> location_ui;
|
WM::Proxy<LocationUIWindow> location_ui;
|
||||||
WM::Proxy<RouteParams_UI> route_params;
|
WM::Proxy<RouteParams_UI> route_params;
|
||||||
WM::Proxy<EngineControl> audio_midi_setup;
|
WM::Proxy<EngineControl> audio_midi_setup;
|
||||||
|
WM::Proxy<ExportVideoDialog> export_video_dialog;
|
||||||
|
|
||||||
/* Windows/Dialogs that require a creator method */
|
/* Windows/Dialogs that require a creator method */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,7 @@ ARDOUR_UI::install_actions ()
|
||||||
sigc::mem_fun (*this, &ARDOUR_UI::remove_video));
|
sigc::mem_fun (*this, &ARDOUR_UI::remove_video));
|
||||||
act->set_sensitive (false);
|
act->set_sensitive (false);
|
||||||
act = ActionManager::register_action (main_actions, X_("ExportVideo"), _("Export To Video File"),
|
act = ActionManager::register_action (main_actions, X_("ExportVideo"), _("Export To Video File"),
|
||||||
hide_return (sigc::bind (sigc::mem_fun(*editor, &PublicEditor::export_video), false)));
|
hide_return (sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::export_video), false)));
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
|
||||||
act = ActionManager::register_action (main_actions, X_("Snapshot"), _("Snapshot..."), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::snapshot_session), false));
|
act = ActionManager::register_action (main_actions, X_("Snapshot"), _("Snapshot..."), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::snapshot_session), false));
|
||||||
|
|
|
||||||
|
|
@ -1878,7 +1878,7 @@ Editor::add_selection_context_items (Menu_Helpers::MenuList& edit_items)
|
||||||
edit_items.push_back (MenuElem (_("Bounce Range to Region List With Processing"), sigc::bind (sigc::mem_fun(*this, &Editor::bounce_range_selection), false, true)));
|
edit_items.push_back (MenuElem (_("Bounce Range to Region List With Processing"), sigc::bind (sigc::mem_fun(*this, &Editor::bounce_range_selection), false, true)));
|
||||||
edit_items.push_back (MenuElem (_("Export Range..."), sigc::mem_fun(*this, &Editor::export_selection)));
|
edit_items.push_back (MenuElem (_("Export Range..."), sigc::mem_fun(*this, &Editor::export_selection)));
|
||||||
if (ARDOUR_UI::instance()->video_timeline->get_duration() > 0) {
|
if (ARDOUR_UI::instance()->video_timeline->get_duration() > 0) {
|
||||||
edit_items.push_back (MenuElem (_("Export Video Range..."), sigc::bind (sigc::mem_fun(*this, &Editor::export_video), true)));
|
edit_items.push_back (MenuElem (_("Export Video Range..."), sigc::bind (sigc::mem_fun(*(ARDOUR_UI::instance()), &ARDOUR_UI::export_video), true)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -994,7 +994,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
|
||||||
void toggle_ruler_video (bool onoff) {ruler_video_action->set_active(onoff);}
|
void toggle_ruler_video (bool onoff) {ruler_video_action->set_active(onoff);}
|
||||||
int videotl_bar_height; /* in units of timebar_height; default: 4 */
|
int videotl_bar_height; /* in units of timebar_height; default: 4 */
|
||||||
int get_videotl_bar_height () const { return videotl_bar_height; }
|
int get_videotl_bar_height () const { return videotl_bar_height; }
|
||||||
void export_video (bool range = false);
|
|
||||||
void toggle_region_video_lock ();
|
void toggle_region_video_lock ();
|
||||||
|
|
||||||
friend class EditorCursor;
|
friend class EditorCursor;
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@
|
||||||
#include "audio_time_axis.h"
|
#include "audio_time_axis.h"
|
||||||
#include "video_image_frame.h"
|
#include "video_image_frame.h"
|
||||||
#include "export_video_dialog.h"
|
#include "export_video_dialog.h"
|
||||||
#include "export_video_infobox.h"
|
|
||||||
#include "interthread_progress_window.h"
|
#include "interthread_progress_window.h"
|
||||||
|
|
||||||
#include "pbd/openuri.h"
|
#include "pbd/openuri.h"
|
||||||
|
|
@ -105,26 +104,3 @@ Editor::embed_audio_from_video (std::string path, framepos_t n, bool lock_positi
|
||||||
import_status.all_done = true;
|
import_status.all_done = true;
|
||||||
::g_unlink(path.c_str());
|
::g_unlink(path.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
Editor::export_video (bool range)
|
|
||||||
{
|
|
||||||
if (ARDOUR::Config->get_show_video_export_info()) {
|
|
||||||
ExportVideoInfobox infobox (_session);
|
|
||||||
Gtk::ResponseType rv = (Gtk::ResponseType) infobox.run();
|
|
||||||
if (infobox.show_again()) {
|
|
||||||
ARDOUR::Config->set_show_video_export_info(false);
|
|
||||||
}
|
|
||||||
switch (rv) {
|
|
||||||
case GTK_RESPONSE_YES:
|
|
||||||
PBD::open_uri (ARDOUR::Config->get_reference_manual_url() + "/video-timeline/operations/#export");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ExportVideoDialog dialog (_session, get_selection().time, range);
|
|
||||||
Gtk::ResponseType r = (Gtk::ResponseType) dialog.run();
|
|
||||||
(void) r; // keep gcc quiet
|
|
||||||
dialog.hide();
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -63,9 +63,8 @@ using namespace PBD;
|
||||||
using namespace ARDOUR;
|
using namespace ARDOUR;
|
||||||
using namespace VideoUtils;
|
using namespace VideoUtils;
|
||||||
|
|
||||||
ExportVideoDialog::ExportVideoDialog (Session* s, TimeSelection &tme, bool range)
|
ExportVideoDialog::ExportVideoDialog ()
|
||||||
: ArdourDialog (_("Export Video File "))
|
: ArdourDialog (_("Export Video File "))
|
||||||
, export_range (tme)
|
|
||||||
, outfn_path_label (_("File:"), Gtk::ALIGN_LEFT)
|
, outfn_path_label (_("File:"), Gtk::ALIGN_LEFT)
|
||||||
, outfn_browse_button (_("Browse"))
|
, outfn_browse_button (_("Browse"))
|
||||||
, invid_path_label (_("Video:"), Gtk::ALIGN_LEFT)
|
, invid_path_label (_("Video:"), Gtk::ALIGN_LEFT)
|
||||||
|
|
@ -90,8 +89,6 @@ ExportVideoDialog::ExportVideoDialog (Session* s, TimeSelection &tme, bool range
|
||||||
, debug_checkbox (_("Debug Mode: Print ffmpeg command and output to stdout."))
|
, debug_checkbox (_("Debug Mode: Print ffmpeg command and output to stdout."))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
set_session (s);
|
|
||||||
|
|
||||||
set_name ("ExportVideoDialog");
|
set_name ("ExportVideoDialog");
|
||||||
set_modal (true);
|
set_modal (true);
|
||||||
set_skip_taskbar_hint (true);
|
set_skip_taskbar_hint (true);
|
||||||
|
|
@ -144,53 +141,7 @@ ExportVideoDialog::ExportVideoDialog (Session* s, TimeSelection &tme, bool range
|
||||||
|
|
||||||
insnd_combo.set_name ("PaddedButton");
|
insnd_combo.set_name ("PaddedButton");
|
||||||
insnd_combo.append_text (string_compose (_("from the %1 session's start to the session's end"), PROGRAM_NAME));
|
insnd_combo.append_text (string_compose (_("from the %1 session's start to the session's end"), PROGRAM_NAME));
|
||||||
|
|
||||||
frameoffset_t av_offset = ARDOUR_UI::instance()->video_timeline->get_offset();
|
|
||||||
if (av_offset < 0 ) {
|
|
||||||
insnd_combo.append_text (_("from 00:00:00:00 to the video's end"));
|
|
||||||
} else {
|
|
||||||
insnd_combo.append_text (_("from the video's start to the video's end"));
|
|
||||||
}
|
|
||||||
if (!export_range.empty()) {
|
|
||||||
insnd_combo.append_text (_("Selected range")); // TODO show export_range.start() -> export_range.end_frame()
|
|
||||||
}
|
|
||||||
if (range) {
|
|
||||||
insnd_combo.set_active(2);
|
|
||||||
} else {
|
|
||||||
insnd_combo.set_active(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
outfn_path_entry.set_width_chars(38);
|
outfn_path_entry.set_width_chars(38);
|
||||||
outfn_path_entry.set_text (_session->session_directory().export_path() + G_DIR_SEPARATOR +"export.avi");
|
|
||||||
|
|
||||||
XMLNode* node = _session->extra_xml (X_("Videotimeline"));
|
|
||||||
if (node) {
|
|
||||||
bool filenameset = false;
|
|
||||||
if (node->property(X_("OriginalVideoFile"))) {
|
|
||||||
std::string filename = node->property(X_("OriginalVideoFile"))->value();
|
|
||||||
if (Glib::file_test(filename, Glib::FILE_TEST_EXISTS)) {
|
|
||||||
invid_path_entry.set_text (filename);
|
|
||||||
filenameset = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!filenameset
|
|
||||||
&& node->property(X_("Filename"))
|
|
||||||
&& node->property(X_("LocalFile"))
|
|
||||||
&& node->property(X_("LocalFile"))->value() == X_("1")
|
|
||||||
) {
|
|
||||||
std::string filename = node->property(X_("Filename"))->value();
|
|
||||||
if (filename.at(0) != G_DIR_SEPARATOR) {
|
|
||||||
filename = Glib::build_filename (_session->session_directory().video_path(), filename);
|
|
||||||
}
|
|
||||||
if (Glib::file_test(filename, Glib::FILE_TEST_EXISTS)) {
|
|
||||||
invid_path_entry.set_text (filename);
|
|
||||||
filenameset = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!filenameset) {
|
|
||||||
invid_path_entry.set_text (X_(""));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
l = manage (new Label (_("<b>Settings:</b>"), Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, false));
|
l = manage (new Label (_("<b>Settings:</b>"), Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, false));
|
||||||
l->set_use_markup ();
|
l->set_use_markup ();
|
||||||
|
|
@ -306,16 +257,6 @@ ExportVideoDialog::ExportVideoDialog (Session* s, TimeSelection &tme, bool range
|
||||||
fps_combo.append_text("30");
|
fps_combo.append_text("30");
|
||||||
fps_combo.append_text("59.94");
|
fps_combo.append_text("59.94");
|
||||||
fps_combo.append_text("60");
|
fps_combo.append_text("60");
|
||||||
float tcfps = _session->timecode_frames_per_second();
|
|
||||||
if (fabs(tcfps - 23.976) < 0.01) { fps_combo.set_active(0); }
|
|
||||||
else if (fabs(tcfps - 24.0 ) < 0.01) { fps_combo.set_active(1); }
|
|
||||||
else if (fabs(tcfps - 24.976) < 0.01) { fps_combo.set_active(2); }
|
|
||||||
else if (fabs(tcfps - 25.0 ) < 0.01) { fps_combo.set_active(3); }
|
|
||||||
else if (fabs(tcfps - 29.97 ) < 0.01) { fps_combo.set_active(4); }
|
|
||||||
else if (fabs(tcfps - 30.0 ) < 0.01) { fps_combo.set_active(5); }
|
|
||||||
else if (fabs(tcfps - 59.94 ) < 0.01) { fps_combo.set_active(6); }
|
|
||||||
else if (fabs(tcfps - 60.0 ) < 0.01) { fps_combo.set_active(7); }
|
|
||||||
else { fps_combo.set_active(5); }
|
|
||||||
|
|
||||||
aspect_combo.set_name ("PaddedButton");
|
aspect_combo.set_name ("PaddedButton");
|
||||||
aspect_combo.append_text("4:3");
|
aspect_combo.append_text("4:3");
|
||||||
|
|
@ -358,6 +299,90 @@ ExportVideoDialog::~ExportVideoDialog ()
|
||||||
if (transcoder) { delete transcoder; transcoder = 0;}
|
if (transcoder) { delete transcoder; transcoder = 0;}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ExportVideoDialog::apply_state (TimeSelection &tme, bool range)
|
||||||
|
{
|
||||||
|
export_range = tme;
|
||||||
|
outfn_path_entry.set_text (_session->session_directory().export_path() + G_DIR_SEPARATOR +"export.avi");
|
||||||
|
|
||||||
|
frameoffset_t av_offset = ARDOUR_UI::instance()->video_timeline->get_offset();
|
||||||
|
if (av_offset < 0 ) {
|
||||||
|
insnd_combo.append_text (_("from 00:00:00:00 to the video's end"));
|
||||||
|
} else {
|
||||||
|
insnd_combo.append_text (_("from the video's start to the video's end"));
|
||||||
|
}
|
||||||
|
if (!export_range.empty()) {
|
||||||
|
insnd_combo.append_text (_("Selected range")); // TODO show export_range.start() -> export_range.end_frame()
|
||||||
|
}
|
||||||
|
if (range) {
|
||||||
|
insnd_combo.set_active(2);
|
||||||
|
} else {
|
||||||
|
insnd_combo.set_active(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
float tcfps = _session->timecode_frames_per_second();
|
||||||
|
if (fabs(tcfps - 23.976) < 0.01) { fps_combo.set_active(0); }
|
||||||
|
else if (fabs(tcfps - 24.0 ) < 0.01) { fps_combo.set_active(1); }
|
||||||
|
else if (fabs(tcfps - 24.976) < 0.01) { fps_combo.set_active(2); }
|
||||||
|
else if (fabs(tcfps - 25.0 ) < 0.01) { fps_combo.set_active(3); }
|
||||||
|
else if (fabs(tcfps - 29.97 ) < 0.01) { fps_combo.set_active(4); }
|
||||||
|
else if (fabs(tcfps - 30.0 ) < 0.01) { fps_combo.set_active(5); }
|
||||||
|
else if (fabs(tcfps - 59.94 ) < 0.01) { fps_combo.set_active(6); }
|
||||||
|
else if (fabs(tcfps - 60.0 ) < 0.01) { fps_combo.set_active(7); }
|
||||||
|
else { fps_combo.set_active(5); }
|
||||||
|
|
||||||
|
XMLNode* node = _session->extra_xml (X_("Videotimeline"));
|
||||||
|
if (node) {
|
||||||
|
bool filenameset = false;
|
||||||
|
if (node->property(X_("OriginalVideoFile"))) {
|
||||||
|
std::string filename = node->property(X_("OriginalVideoFile"))->value();
|
||||||
|
if (Glib::file_test(filename, Glib::FILE_TEST_EXISTS)) {
|
||||||
|
invid_path_entry.set_text (filename);
|
||||||
|
filenameset = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!filenameset
|
||||||
|
&& node->property(X_("Filename"))
|
||||||
|
&& node->property(X_("LocalFile"))
|
||||||
|
&& node->property(X_("LocalFile"))->value() == X_("1")
|
||||||
|
)
|
||||||
|
{
|
||||||
|
std::string filename = node->property(X_("Filename"))->value();
|
||||||
|
if (filename.at(0) != G_DIR_SEPARATOR)
|
||||||
|
{
|
||||||
|
filename = Glib::build_filename (_session->session_directory().video_path(), filename);
|
||||||
|
}
|
||||||
|
if (Glib::file_test(filename, Glib::FILE_TEST_EXISTS))
|
||||||
|
{
|
||||||
|
invid_path_entry.set_text (filename);
|
||||||
|
filenameset = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!filenameset) {
|
||||||
|
invid_path_entry.set_text (X_(""));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
node = _session->extra_xml (X_("Videoexport"));
|
||||||
|
if (node) {
|
||||||
|
if (node->property(X_("OriginalVideoFile"))) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLNode&
|
||||||
|
ExportVideoDialog::get_state ()
|
||||||
|
{
|
||||||
|
XMLNode* node = new XMLNode (X_("Videoexport"));
|
||||||
|
return *node;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ExportVideoDialog::set_state (const XMLNode &)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ExportVideoDialog::on_show ()
|
ExportVideoDialog::on_show ()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -41,13 +41,18 @@
|
||||||
class ExportVideoDialog : public ArdourDialog , public PBD::ScopedConnectionList
|
class ExportVideoDialog : public ArdourDialog , public PBD::ScopedConnectionList
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ExportVideoDialog (ARDOUR::Session*, TimeSelection &tme, bool range = false);
|
ExportVideoDialog ();
|
||||||
~ExportVideoDialog ();
|
~ExportVideoDialog ();
|
||||||
|
|
||||||
std::string get_exported_filename () { return outfn_path_entry.get_text(); }
|
std::string get_exported_filename () { return outfn_path_entry.get_text(); }
|
||||||
|
|
||||||
|
void apply_state(TimeSelection &tme, bool range);
|
||||||
|
|
||||||
|
XMLNode& get_state ();
|
||||||
|
void set_state (const XMLNode &);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TimeSelection &export_range;
|
TimeSelection export_range;
|
||||||
|
|
||||||
void on_show ();
|
void on_show ();
|
||||||
void abort_clicked ();
|
void abort_clicked ();
|
||||||
|
|
|
||||||
|
|
@ -303,7 +303,6 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible, publi
|
||||||
virtual int get_videotl_bar_height () const = 0;
|
virtual int get_videotl_bar_height () const = 0;
|
||||||
virtual void set_video_timeline_height (const int h) = 0;
|
virtual void set_video_timeline_height (const int h) = 0;
|
||||||
virtual void embed_audio_from_video (std::string, framepos_t n = 0, bool lock_position_to_video = true) = 0;
|
virtual void embed_audio_from_video (std::string, framepos_t n = 0, bool lock_position_to_video = true) = 0;
|
||||||
virtual void export_video (bool range = false) = 0;
|
|
||||||
|
|
||||||
virtual RouteTimeAxisView* get_route_view_by_route_id (const PBD::ID& id) const = 0;
|
virtual RouteTimeAxisView* get_route_view_by_route_id (const PBD::ID& id) const = 0;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue