regenerate and manually fix all PO files so that ./waf i18n doesn't generate unnecess...
[ardour.git] / libs / ardour / import.cc
index 2b3f1058792b60b8fcb18fe41851cfcf40cf59d6..fd5d3bf98a18c36da7cf5c29abe3c73d2cc0c2ff 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>
@@ -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   */
@@ -392,9 +392,9 @@ write_midi_data_to_new_files (Evoral::SMF* source, ImportStatus& status,
 
                                smfs->append_event_beats(
                                        source_lock,
-                                       Evoral::Event<Evoral::MusicalTime>(
+                                       Evoral::Event<Evoral::Beats>(
                                                0,
-                                               Evoral::MusicalTime::ticks_at_rate(t, source->ppqn()),
+                                               Evoral::Beats::ticks_at_rate(t, source->ppqn()),
                                                size,
                                                buf));
 
@@ -407,9 +407,9 @@ write_midi_data_to_new_files (Evoral::SMF* source, ImportStatus& status,
 
                                /* we wrote something */
 
-                               const framepos_t          pos = 0;
-                               const Evoral::MusicalTime length_beats = Evoral::MusicalTime::ticks_at_rate(t, source->ppqn());
-                               BeatsFramesConverter      converter(smfs->session().tempo_map(), pos);
+                               const framepos_t     pos          = 0;
+                               const Evoral::Beats  length_beats = Evoral::Beats::ticks_at_rate(t, source->ppqn());
+                               BeatsFramesConverter converter(smfs->session().tempo_map(), pos);
                                smfs->update_length(pos + converter.to(length_beats.round_up_to_beat()));
                                smfs->mark_streaming_write_completed (source_lock);
 
@@ -417,14 +417,14 @@ write_midi_data_to_new_files (Evoral::SMF* source, ImportStatus& status,
                                        break;
                                }
                        } else {
-                               warning << string_compose (_("Track %1 of %2 contained no usable MIDI data"), i, source->file_path()) << endmsg;
+                               info << string_compose (_("Track %1 of %2 contained no usable MIDI data"), i, source->num_tracks()) << endmsg;
                        }
 
                        ++s; // next source
                }
 
-       } catch (...) {
-               error << string_compose (_("MIDI file %1 was not readable (no reason available)"), source->file_path()) << endmsg;
+       } catch (exception& e) {
+               error << string_compose (_("MIDI file could not be written (best guess: %1)"), e.what()) << endmsg;
        }
 
        if (buf) {
@@ -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;