change Session::convert_to_frames_at() to Session::convert_to_frames() to reflect...
[ardour.git] / libs / ardour / export_channel.cc
index f94ee1325792e787dd6eba39c6f0bb690c732e8a..c612b1f6684e6af3488138d3b9bdbb1c4347a1cd 100644 (file)
 #include "ardour/audio_port.h"
 #include "ardour/audio_track.h"
 #include "ardour/audioengine.h"
+#include "ardour/audioregion.h"
 #include "ardour/export_channel.h"
 #include "ardour/export_failed.h"
 #include "ardour/session.h"
 
+#include "pbd/error.h"
+
 using namespace ARDOUR;
 
 bool
@@ -39,7 +42,7 @@ PortExportChannel::operator< (ExportChannel const & other) const
 }
 
 void
-PortExportChannel::read (Sample * data, nframes_t frames) const
+PortExportChannel::read (Sample * data, framecnt_t frames) const
 {
        memset (data, 0, frames * sizeof (float));
 
@@ -72,7 +75,13 @@ PortExportChannel::set_state (XMLNode * node, Session & session)
        XMLNodeList xml_ports = node->children ("Port");
        for (XMLNodeList::iterator it = xml_ports.begin(); it != xml_ports.end(); ++it) {
                if ((prop = (*it)->property ("name"))) {
-                       ports.insert (dynamic_cast<AudioPort *> (session.engine().get_port_by_name (prop->value())));
+                       std::string const & name = prop->value();
+                       AudioPort * port = dynamic_cast<AudioPort *> (session.engine().get_port_by_name (name));
+                       if (port) {
+                               ports.insert (port);
+                       } else {
+                               PBD::warning << string_compose (_("Could not get port for export channel \"%1\", dropping the channel"), name) << endmsg;
+                       }
                }
        }
 }
@@ -128,7 +137,7 @@ RegionExportChannelFactory::create (uint32_t channel)
 }
 
 void
-RegionExportChannelFactory::read (uint32_t channel, Sample * data, nframes_t frames_to_read)
+RegionExportChannelFactory::read (uint32_t channel, Sample * data, framecnt_t frames_to_read)
 {
        assert (channel < n_channels);
        assert (frames_to_read <= frames_per_cycle);
@@ -142,7 +151,7 @@ RegionExportChannelFactory::read (uint32_t channel, Sample * data, nframes_t fra
 }
 
 void
-RegionExportChannelFactory::update_buffers (nframes_t frames)
+RegionExportChannelFactory::update_buffers (framecnt_t frames)
 {
        assert (frames <= frames_per_cycle);