#include "ardour/session_metadata.h"
#include "ardour/broadcast_info.h"
-#include "utils.h"
#include "opts.h"
#include "export_video_dialog.h"
#include "utils_videotl.h"
using namespace ARDOUR;
using namespace VideoUtils;
-ExportVideoDialog::ExportVideoDialog (Session* s, TimeSelection &tme)
+ExportVideoDialog::ExportVideoDialog (Session* s, TimeSelection &tme, bool range)
: ArdourDialog (_("Export Video File "))
, export_range (tme)
, outfn_path_label (_("File:"), Gtk::ALIGN_LEFT)
if (!export_range.empty()) {
insnd_combo.append_text (_("Selected range")); // TODO show export_range.start() -> export_range.end_frame()
}
- insnd_combo.set_active(0);
+ if (range) {
+ insnd_combo.set_active(2);
+ } else {
+ insnd_combo.set_active(0);
+ }
outfn_path_entry.set_width_chars(38);
outfn_path_entry.set_text (_session->session_directory().export_path() + G_DIR_SEPARATOR +"export.avi");
end += av_offset;
}
else if (insnd_combo.get_active_row_number() == 2) {
- // TODO quantize to video-frame ?!
- start = export_range.start();
- end = export_range.end_frame();
+ start = ARDOUR_UI::instance()->video_timeline->quantify_frames_to_apv(export_range.start());
+ end = ARDOUR_UI::instance()->video_timeline->quantify_frames_to_apv(export_range.end_frame());
}
if (end <= 0) {
start = _session->current_start_frame();
printf("audio export-range %lld -> %lld\n", start, end);
#endif
+ const frameoffset_t vstart = ARDOUR_UI::instance()->video_timeline->get_offset();
+ const frameoffset_t vend = vstart + ARDOUR_UI::instance()->video_timeline->get_duration();
+
+ if ( (start >= end) || (end < vstart) || (start > vend)) {
+ warning << _("Export Video: export-range does not include video.") << endmsg;
+ Gtk::Dialog::response(RESPONSE_CANCEL);
+ return;
+ }
+
tsp->set_range (start, end);
tsp->set_name ("mysession");
tsp->set_range_id ("session");
insnd = fnp->get_path(fmp);
/* do sound export */
+ fmp->set_soundcloud_upload(false);
_session->get_export_handler()->add_export_config (tsp, ccp, fmp, fnp, b);
_session->get_export_handler()->do_export();
status = _session->get_export_status ();
ffs.clear();
if (fps_checkbox.get_active()) {
- ffs["-r"] = fps_combo.get_active_text();
+ ffs["-r"] = fps_combo.get_active_text();
+ transcoder->set_fps(atof(fps_combo.get_active_text()));
}
if (scale_checkbox.get_active()) {
ffs["-an"] = "-y";
ffs["-passlogfile"] = Glib::path_get_dirname (outfn) + G_DIR_SEPARATOR + "ffmpeg2pass";
ffs["-f"] = get_file_extension(invid).empty()?"mov":get_file_extension(invid);
-#ifdef _OS_WIN32
+#ifdef PLATFORM_WINDOWS
outfn = "NUL";
#else
outfn = "/dev/null";
std::ostringstream osstream; osstream << duration_s;
ffs["-t"] = osstream.str();
- if (fps_checkbox.get_active()) {
- transcoder->set_duration(duration_s * atof(fps_combo.get_active_text()));
- } else {
- transcoder->set_duration(duration_s * transcoder->get_fps());
- }
+ transcoder->set_duration(duration_s * transcoder->get_fps());
if (insnd_combo.get_active_row_number() == 0 || insnd_combo.get_active_row_number() == 2) {
framepos_t start, snend;