From a8d24d35dc999228f804ed425c0d9e90b9ddceaa Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 28 Apr 2013 16:23:35 +0100 Subject: Fix broken external audio support. --- src/lib/sndfile_decoder.cc | 68 +++++++++++++++++----------------------------- src/lib/sndfile_decoder.h | 6 ++-- 2 files changed, 29 insertions(+), 45 deletions(-) (limited to 'src') diff --git a/src/lib/sndfile_decoder.cc b/src/lib/sndfile_decoder.cc index af59c049c..fdaf2eeaa 100644 --- a/src/lib/sndfile_decoder.cc +++ b/src/lib/sndfile_decoder.cc @@ -36,15 +36,12 @@ using boost::optional; SndfileDecoder::SndfileDecoder (shared_ptr f, DecodeOptions o) : Decoder (f, o) , AudioDecoder (f, o) + , _done (0) + , _frames (0) { - sf_count_t frames; - vector sf = open_files (frames); - close_files (sf); -} - -vector -SndfileDecoder::open_files (sf_count_t & frames) -{ + _done = 0; + _frames = 0; + vector const files = _film->external_audio (); int N = 0; @@ -55,16 +52,14 @@ SndfileDecoder::open_files (sf_count_t & frames) } if (N == 0) { - return vector (); + return; } bool first = true; - frames = 0; - vector sndfiles; for (size_t i = 0; i < (size_t) N; ++i) { if (files[i].empty ()) { - sndfiles.push_back (0); + _sndfiles.push_back (0); } else { SF_INFO info; SNDFILE* s = sf_open (files[i].c_str(), SFM_READ, &info); @@ -76,7 +71,7 @@ SndfileDecoder::open_files (sf_count_t & frames) throw DecodeError (_("external audio files must be mono")); } - sndfiles.push_back (s); + _sndfiles.push_back (s); if (first) { shared_ptr st ( @@ -87,60 +82,47 @@ SndfileDecoder::open_files (sf_count_t & frames) _audio_streams.push_back (st); _audio_stream = st; - frames = info.frames; + _frames = info.frames; first = false; } else { - if (info.frames != frames) { + if (info.frames != _frames) { throw DecodeError (_("external audio files have differing lengths")); } } } } - - return sndfiles; } bool SndfileDecoder::pass () { - sf_count_t frames; - vector sndfiles = open_files (frames); - if (sndfiles.empty()) { - return true; - } - /* Do things in half second blocks as I think there may be limits to what FFmpeg (and in particular the resampler) can cope with. */ sf_count_t const block = _audio_stream->sample_rate() / 2; shared_ptr audio (new AudioBuffers (_audio_stream->channels(), block)); - sf_count_t done = 0; - while (frames > 0) { - sf_count_t const this_time = min (block, frames); - for (size_t i = 0; i < sndfiles.size(); ++i) { - if (!sndfiles[i]) { - audio->make_silent (i); - } else { - sf_read_float (sndfiles[i], audio->data(i), block); - } + sf_count_t const this_time = min (block, _frames - _done); + for (size_t i = 0; i < _sndfiles.size(); ++i) { + if (!_sndfiles[i]) { + audio->make_silent (i); + } else { + sf_read_float (_sndfiles[i], audio->data(i), this_time); } - - audio->set_frames (this_time); - Audio (audio, double(done) / _audio_stream->sample_rate()); - done += this_time; - frames -= this_time; } - close_files (sndfiles); + audio->set_frames (this_time); + Audio (audio, double(_done) / _audio_stream->sample_rate()); + _done += this_time; - return true; + return (_done == _frames); } -void -SndfileDecoder::close_files (vector const & sndfiles) +SndfileDecoder::~SndfileDecoder () { - for (size_t i = 0; i < sndfiles.size(); ++i) { - sf_close (sndfiles[i]); + for (size_t i = 0; i < _sndfiles.size(); ++i) { + if (_sndfiles[i]) { + sf_close (_sndfiles[i]); + } } } diff --git a/src/lib/sndfile_decoder.h b/src/lib/sndfile_decoder.h index e16eab673..9489cb5ec 100644 --- a/src/lib/sndfile_decoder.h +++ b/src/lib/sndfile_decoder.h @@ -45,10 +45,12 @@ class SndfileDecoder : public AudioDecoder { public: SndfileDecoder (boost::shared_ptr, DecodeOptions); + ~SndfileDecoder (); bool pass (); private: - std::vector open_files (sf_count_t &); - void close_files (std::vector const &); + std::vector _sndfiles; + sf_count_t _done; + sf_count_t _frames; }; -- cgit v1.2.3 From c75d5f1bbe03e83d3ab0ba4c76f8a6ce53eb197d Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 28 Apr 2013 16:27:32 +0100 Subject: Updated it_IT translation from Massimiliano --- src/lib/po/it_IT.po | 21 ++++++++++----------- src/tools/po/it_IT.po | 2 +- src/wx/po/it_IT.po | 27 +++++++++++++-------------- 3 files changed, 24 insertions(+), 26 deletions(-) (limited to 'src') diff --git a/src/lib/po/it_IT.po b/src/lib/po/it_IT.po index 5f9e9e862..a3d35dec9 100644 --- a/src/lib/po/it_IT.po +++ b/src/lib/po/it_IT.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: IT VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-04-22 15:06+0100\n" -"PO-Revision-Date: 2013-04-03 15:04+0100\n" +"PO-Revision-Date: 2013-04-28 10:26+0100\n" "Last-Translator: Maci \n" "Language-Team: \n" "Language: Italiano\n" @@ -46,9 +46,8 @@ msgid "16:9 within Flat" msgstr "16:9 all'interno di Flat" #: src/lib/format.cc:115 -#, fuzzy msgid "16:9 within Scope" -msgstr "16:9 all'interno di Flat" +msgstr "16:9 all'interno di Scope" #: src/lib/filter.cc:88 msgid "3D denoiser" @@ -56,7 +55,7 @@ msgstr "Riduttore di rumore 3D" #: src/lib/format.cc:79 msgid "4:3" -msgstr "" +msgstr "4:3" #: src/lib/format.cc:87 msgid "4:3 within Flat" @@ -183,7 +182,7 @@ msgstr "Esamino il contenuto" #: src/lib/examine_content_job.cc:58 msgid "Examine content of %1" -msgstr "Esamo il contenuto di %1" +msgstr "Esamino il contenuto di %1" #: src/lib/filter.cc:72 msgid "Experimental horizontal deblocking filter 1" @@ -301,7 +300,7 @@ msgstr "Riduzione del rumore" #: src/lib/job.cc:302 msgid "OK (ran for %1)" -msgstr "OK (procede al %1)" +msgstr "OK (eseguito in %1)" #: src/lib/filter.cc:91 msgid "Overcomplete wavelet denoiser" @@ -473,7 +472,7 @@ msgstr "non riesco ad aprire il file dell'audio esterno per leggerlo" #: src/lib/exceptions.cc:29 msgid "could not open file %1" -msgstr "non riesco ad aprire il file per leggerlo" +msgstr "non riesco ad aprire %1" #: src/lib/dcp_video_frame.cc:388 msgid "could not open file for reading" @@ -481,11 +480,11 @@ msgstr "non riesco ad aprire il file per leggerlo" #: src/lib/exceptions.cc:44 msgid "could not read from file %1 (%2)" -msgstr "Non posso creare la directory remota %1 (%2)" +msgstr "non posso leggere dal file %1 (%2)" #: src/lib/encoder.cc:137 src/lib/encoder.cc:314 msgid "could not run sample-rate converter" -msgstr "non riesco a lanciare il convertitore della frequenza di campionamento" +msgstr "non riesco a eseguire il convertitore della frequenza di campionamento" #: src/lib/scp_dcp_job.cc:86 msgid "could not start SCP session (%1)" @@ -497,7 +496,7 @@ msgstr "non posso avviare la sessione SSH" #: src/lib/exceptions.cc:50 msgid "could not write to file %1 (%2)" -msgstr "Non posso scrivere il file remoto (%1)" +msgstr "non posso scrivere il file (%1)" #: src/lib/sndfile_decoder.cc:94 msgid "external audio files have differing lengths" @@ -549,7 +548,7 @@ msgstr "nome" #: src/lib/imagemagick_decoder.cc:60 msgid "no still image files found" -msgstr "file del fermo immagine non trovati" +msgstr "file immagini statiche non trovati" #: src/lib/subtitle.cc:58 msgid "non-bitmap subtitles not yet supported" diff --git a/src/tools/po/it_IT.po b/src/tools/po/it_IT.po index 1e0d8446a..f0984946d 100644 --- a/src/tools/po/it_IT.po +++ b/src/tools/po/it_IT.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: IT VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-04-22 15:06+0100\n" -"PO-Revision-Date: 2013-04-03 13:00+0100\n" +"PO-Revision-Date: 2013-04-28 10:31+0100\n" "Last-Translator: Maci \n" "Language-Team: \n" "Language: Italiano\n" diff --git a/src/wx/po/it_IT.po b/src/wx/po/it_IT.po index c730a7ff7..2d4ee7fd7 100644 --- a/src/wx/po/it_IT.po +++ b/src/wx/po/it_IT.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: IT VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-04-22 15:06+0100\n" -"PO-Revision-Date: 2013-04-03 12:37+0100\n" +"PO-Revision-Date: 2013-04-28 10:27+0100\n" "Last-Translator: Maci \n" "Language-Team: \n" "Language: Italiano\n" @@ -27,7 +27,7 @@ msgstr "(riavviare DVD-o-matic per vedere i cambiamenti di lingua)" #: src/wx/film_editor.cc:1276 msgid "1 channel" -msgstr "Canale 1" +msgstr "1 canale" #: src/wx/film_editor.cc:184 msgid "A/B" @@ -56,7 +56,7 @@ msgstr "Lingua dell'audio (es. EN)" #: src/wx/film_editor.cc:824 #, c-format msgid "Audio will be resampled from %dHz to %dHz\n" -msgstr "" +msgstr "L'Audio sarà ricampionato da %dHz a %dHz\n" #: src/wx/job_wrapper.cc:38 #, c-format @@ -126,7 +126,7 @@ msgstr "Crea nella cartella" #: src/wx/film_editor.cc:1371 #, c-format msgid "Cropped to %dx%d (%.2f:1)\n" -msgstr "" +msgstr "Tagliato da %dx%d (%.2f:1)\n" #: src/wx/dci_metadata_dialog.cc:28 msgid "DCI name" @@ -224,7 +224,7 @@ msgstr "Fotogrammi già codificati" #: src/wx/gain_calculator_dialog.cc:27 msgid "Gain Calculator" -msgstr "Calcola il guadagno audio" +msgstr "Calcolatore del guadagno audio" #: src/wx/properties_dialog.cc:59 msgid "Gb" @@ -285,7 +285,7 @@ msgstr "Frequenza fotogrammi originale" #: src/wx/film_editor.cc:1360 #, c-format msgid "Original video is %dx%d (%.2f:1)\n" -msgstr "" +msgstr "Il video originale è %dx%d (%.2f:1)\n" #: src/wx/dci_metadata_dialog.cc:57 msgid "Package Type (e.g. OV)" @@ -294,7 +294,7 @@ msgstr "Tipo di Package (es. OV)" #: src/wx/film_editor.cc:1392 #, c-format msgid "Padded with black to %dx%d (%.2f:1)\n" -msgstr "" +msgstr "Riempito con nero a %dx%d (%.2f:1)\n" #: src/wx/audio_dialog.cc:60 msgid "Peak" @@ -339,7 +339,7 @@ msgstr "In corso" #: src/wx/film_editor.cc:1384 #, c-format msgid "Scaled to %dx%d (%.2f:1)\n" -msgstr "" +msgstr "Scalato a %dx%d (%.2f:1)\n" #: src/wx/film_editor.cc:319 msgid "Scaler" @@ -438,9 +438,8 @@ msgid "Trim frames" msgstr "Taglia fotogrammi" #: src/wx/film_editor.cc:179 -#, fuzzy msgid "Trim method" -msgstr "Taglia fotogrammi" +msgstr "Metodo di taglio" #: src/wx/film_editor.cc:125 msgid "Trust content's header" @@ -472,7 +471,7 @@ msgstr "Video" #: src/wx/film_editor.cc:428 msgid "With Subtitles" -msgstr "Con Sottotitoli" +msgstr "Con sottotitoli" #: src/wx/film_editor.cc:1278 msgid "channels" @@ -488,11 +487,11 @@ msgstr "dB" #: src/wx/film_editor.cc:212 msgid "encode all frames and play the subset" -msgstr "" +msgstr "Codifica tutti i fotogrammi e riproduci la selezione" #: src/wx/film_editor.cc:213 msgid "encode only the subset" -msgstr "" +msgstr "codifica solo la selezione" #: src/wx/film_editor.cc:694 src/wx/film_editor.cc:697 msgid "frames" @@ -505,7 +504,7 @@ msgstr "ms" #: src/wx/film_editor.cc:440 msgid "pixels" -msgstr "" +msgstr "pizels" #. / TRANSLATORS: `s' here is an abbreviation for seconds, the unit of time #: src/wx/film_editor.cc:197 -- cgit v1.2.3