video-range export tweaks:
authorRobin Gareus <robin@gareus.org>
Sat, 12 Oct 2013 19:25:05 +0000 (21:25 +0200)
committerRobin Gareus <robin@gareus.org>
Sat, 12 Oct 2013 20:56:08 +0000 (22:56 +0200)
* quantize range to video-frame boundaries
* warn if range is empty or does not include video

gtk2_ardour/export_video_dialog.cc

index dd08b586611aa2854b5419f11bf306255581aad5..eacc32bde2a6e20b77d06517812e3ac8817d2457 100644 (file)
@@ -510,9 +510,8 @@ ExportVideoDialog::launch_export ()
                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();
@@ -522,6 +521,15 @@ ExportVideoDialog::launch_export ()
        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");