and now with "d"
[ardour.git] / libs / ardour / import.cc
index 90a15c9e78defd73ae21151d2bbcc754aa673812..b2b9403e0ea9a8e383046abac3fa8b7b397815a5 100644 (file)
@@ -34,7 +34,7 @@
 #include <sndfile.h>
 #include <samplerate.h>
 
-#include <glib/gstdio.h>
+#include "pbd/gstdio_compat.h"
 #include <glibmm.h>
 
 #include <boost/scoped_array.hpp>
@@ -67,7 +67,7 @@
 #include "ardour/caimportable.h"
 #endif
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace std;
 using namespace ARDOUR;
@@ -265,14 +265,14 @@ write_audio_data_to_new_files (ImportableSource* source, ImportStatus& status,
                uint32_t read_count = 0;
 
                while (!status.cancel) {
-                       framecnt_t const nread = source->read (data.get(), nframes);
+                       framecnt_t const nread = source->read (data.get(), nframes * channels);
                        if (nread == 0) {
                                break;
                        }
 
-                       peak = compute_peak (data.get(), nread, peak);
+                       peak = compute_peak (data.get(), nread * channels, peak);
 
-                       read_count += nread;
+                       read_count += nread / channels;
                        status.progress = 0.5 * read_count / (source->ratio() * source->length() * channels);
                }
 
@@ -294,7 +294,7 @@ write_audio_data_to_new_files (ImportableSource* source, ImportStatus& status,
                uint32_t x;
                uint32_t chn;
 
-               if ((nread = source->read (data.get(), nframes)) == 0) {
+               if ((nread = source->read (data.get(), nframes * channels)) == 0) {
 #ifdef PLATFORM_WINDOWS
                        /* Flush the data once we've finished importing the file. Windows can  */
                        /* cache the data for very long periods of time (perhaps not writing   */
@@ -459,7 +459,7 @@ Session::import_files (ImportStatus& status)
 
        status.sources.clear ();
 
-       for (vector<string>::iterator p = status.paths.begin();
+       for (vector<string>::const_iterator p = status.paths.begin();
             p != status.paths.end() && !status.cancel;
             ++p)
        {
@@ -488,7 +488,7 @@ Session::import_files (ImportStatus& status)
                                return;
                        }
                }
-               
+
                if (channels == 0) {
                        error << _("Import: file contains no channels.") << endmsg;
                        continue;
@@ -553,7 +553,7 @@ Session::import_files (ImportStatus& status)
                                        Analyser::queue_source_for_analysis (boost::static_pointer_cast<Source>(*x), false);
                                }
                        }
-                       
+
                        /* imported, copied files cannot be written or removed
                         */
 
@@ -591,7 +591,7 @@ Session::import_files (ImportStatus& status)
                } catch (...) {
                        error << _("Failed to remove some files after failed/cancelled import operation") << endmsg;
                }
-                               
+
        }
 
        status.done = true;