summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-02-11 12:04:27 +0000
committerCarl Hetherington <cth@carlh.net>2014-02-11 12:04:27 +0000
commit8aeb741ccbe2edb528e98a431bf55459a6836a9b (patch)
treea14569b531d9867683a1ac1c94c8e0eb406906a8 /src
parent4ba8772aef261da209bbb882325fd61a8b479fd7 (diff)
parent22f2cd94132f93a159c2ce9fe263771cb5a5dbdf (diff)
Merge master.
Diffstat (limited to 'src')
-rw-r--r--src/lib/audio_analysis.cc11
-rw-r--r--src/lib/config.h12
-rw-r--r--src/lib/ffmpeg.cc6
-rw-r--r--src/lib/ffmpeg_content.h2
-rw-r--r--src/lib/image.cc8
-rw-r--r--src/lib/job.cc26
-rw-r--r--src/lib/log.cc5
-rw-r--r--src/lib/player.cc5
-rw-r--r--src/lib/po/it_IT.po66
-rw-r--r--src/lib/scp_dcp_job.cc6
-rw-r--r--src/lib/server_finder.cc9
-rw-r--r--src/lib/transcode_job.cc9
-rw-r--r--src/lib/util.cc44
-rw-r--r--src/lib/util.h1
-rw-r--r--src/lib/writer.cc4
-rw-r--r--src/lib/wscript4
-rw-r--r--src/tools/dcpomatic.cc4
-rw-r--r--src/tools/dcpomatic_create.cc52
-rw-r--r--src/tools/po/it_IT.po38
-rw-r--r--src/tools/server_test.cc14
-rw-r--r--src/tools/wscript8
-rw-r--r--src/wx/about_dialog.cc1
-rw-r--r--src/wx/audio_plot.cc4
-rw-r--r--src/wx/film_viewer.cc10
-rw-r--r--src/wx/po/it_IT.po215
-rw-r--r--src/wx/timeline.cc2
-rw-r--r--src/wx/wscript8
27 files changed, 330 insertions, 244 deletions
diff --git a/src/lib/audio_analysis.cc b/src/lib/audio_analysis.cc
index 1488f89fc..98d092726 100644
--- a/src/lib/audio_analysis.cc
+++ b/src/lib/audio_analysis.cc
@@ -93,10 +93,21 @@ AudioAnalysis::AudioAnalysis (boost::filesystem::path filename)
for (int i = 0; i < channels; ++i) {
int points;
fscanf (f, "%d", &points);
+ if (feof (f)) {
+ fclose (f);
+ return;
+ }
+
for (int j = 0; j < points; ++j) {
_data[i].push_back (AudioPoint (f));
+ if (feof (f)) {
+ fclose (f);
+ return;
+ }
}
}
+
+ fclose (f);
}
void
diff --git a/src/lib/config.h b/src/lib/config.h
index 791e41e8f..d77969b3e 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -193,14 +193,6 @@ public:
_server_port_base = p;
}
- void set_reference_scaler (Scaler const * s) {
- _reference_scaler = s;
- }
-
- void set_reference_filters (std::vector<Filter const *> const & f) {
- _reference_filters = f;
- }
-
/** @param i IP address of a TMS that we can copy DCPs to */
void set_tms_ip (std::string i) {
_tms_ip = i;
@@ -326,10 +318,6 @@ private:
bool _use_any_servers;
/** J2K encoding servers that should definitely be used */
std::vector<std::string> _servers;
- /** Scaler to use for the "A" part of A/B comparisons */
- Scaler const * _reference_scaler;
- /** Filters to use for the "A" part of A/B comparisons */
- std::vector<Filter const *> _reference_filters;
/** The IP address of a TMS that we can copy DCPs to */
std::string _tms_ip;
/** The path on a TMS that we should write DCPs to */
diff --git a/src/lib/ffmpeg.cc b/src/lib/ffmpeg.cc
index 4bf941523..5fc333489 100644
--- a/src/lib/ffmpeg.cc
+++ b/src/lib/ffmpeg.cc
@@ -26,6 +26,7 @@ extern "C" {
#include "ffmpeg.h"
#include "ffmpeg_content.h"
#include "exceptions.h"
+#include "util.h"
#include "i18n.h"
@@ -85,7 +86,7 @@ FFmpeg::setup_general ()
av_register_all ();
_file_group.set_paths (_ffmpeg_content->paths ());
- _avio_buffer = static_cast<uint8_t*> (av_malloc (_avio_buffer_size));
+ _avio_buffer = static_cast<uint8_t*> (wrapped_av_malloc (_avio_buffer_size));
_avio_context = avio_alloc_context (_avio_buffer, _avio_buffer_size, 0, this, avio_read_wrapper, 0, avio_seek_wrapper);
_format_context = avformat_alloc_context ();
_format_context->pb = _avio_context;
@@ -146,7 +147,8 @@ void
FFmpeg::setup_video ()
{
boost::mutex::scoped_lock lm (_mutex);
-
+
+ assert (_video_stream >= 0);
AVCodecContext* context = _format_context->streams[_video_stream]->codec;
AVCodec* codec = avcodec_find_decoder (context->codec_id);
diff --git a/src/lib/ffmpeg_content.h b/src/lib/ffmpeg_content.h
index d9037b0d8..e637faf47 100644
--- a/src/lib/ffmpeg_content.h
+++ b/src/lib/ffmpeg_content.h
@@ -86,6 +86,8 @@ private:
/* Constructor for tests */
FFmpegAudioStream ()
: FFmpegStream ("", 0)
+ , frame_rate (0)
+ , channels (0)
, mapping (1)
{}
};
diff --git a/src/lib/image.cc b/src/lib/image.cc
index e5f626c24..78e8bbb2a 100644
--- a/src/lib/image.cc
+++ b/src/lib/image.cc
@@ -509,13 +509,13 @@ Image::Image (AVPixelFormat p, libdcp::Size s, bool aligned)
void
Image::allocate ()
{
- _data = (uint8_t **) av_malloc (4 * sizeof (uint8_t *));
+ _data = (uint8_t **) wrapped_av_malloc (4 * sizeof (uint8_t *));
_data[0] = _data[1] = _data[2] = _data[3] = 0;
- _line_size = (int *) av_malloc (4 * sizeof (int));
+ _line_size = (int *) wrapped_av_malloc (4 * sizeof (int));
_line_size[0] = _line_size[1] = _line_size[2] = _line_size[3] = 0;
- _stride = (int *) av_malloc (4 * sizeof (int));
+ _stride = (int *) wrapped_av_malloc (4 * sizeof (int));
_stride[0] = _stride[1] = _stride[2] = _stride[3] = 0;
for (int i = 0; i < components(); ++i) {
@@ -531,7 +531,7 @@ Image::allocate ()
seem to mind. The nasty + 1 in this malloc makes sure there is always a byte
for that instruction to read safely.
*/
- _data[i] = (uint8_t *) av_malloc (_stride[i] * lines (i) + 1);
+ _data[i] = (uint8_t *) wrapped_av_malloc (_stride[i] * lines (i) + 1);
}
}
diff --git a/src/lib/job.cc b/src/lib/job.cc
index 05a90524c..b543a043f 100644
--- a/src/lib/job.cc
+++ b/src/lib/job.cc
@@ -68,9 +68,6 @@ Job::run_wrapper ()
} catch (libdcp::FileError& e) {
- set_progress (1);
- set_state (FINISHED_ERROR);
-
string m = String::compose (_("An error occurred whilst handling the file %1."), boost::filesystem::path (e.filename()).leaf());
try {
@@ -84,39 +81,48 @@ Job::run_wrapper ()
}
set_error (e.what(), m);
-
- } catch (OpenFileError& e) {
-
set_progress (1);
set_state (FINISHED_ERROR);
+
+ } catch (OpenFileError& e) {
set_error (
String::compose (_("Could not open %1"), e.file().string()),
String::compose (_("DCP-o-matic could not open the file %1. Perhaps it does not exist or is in an unexpected format."), e.file().string())
);
+ set_progress (1);
+ set_state (FINISHED_ERROR);
+
} catch (boost::thread_interrupted &) {
set_state (FINISHED_CANCELLED);
-
- } catch (std::exception& e) {
+ } catch (std::bad_alloc& e) {
+
+ set_error (_("Out of memory"), _("There was not enough memory to do this."));
set_progress (1);
set_state (FINISHED_ERROR);
+
+ } catch (std::exception& e) {
+
set_error (
e.what (),
_("It is not known what caused this error. The best idea is to report the problem to the DCP-o-matic mailing list (carl@dcpomatic.com)")
);
- } catch (...) {
-
set_progress (1);
set_state (FINISHED_ERROR);
+
+ } catch (...) {
+
set_error (
_("Unknown error"),
_("It is not known what caused this error. The best idea is to report the problem to the DCP-o-matic mailing list (carl@dcpomatic.com)")
);
+ set_progress (1);
+ set_state (FINISHED_ERROR);
}
}
diff --git a/src/lib/log.cc b/src/lib/log.cc
index 9ddf460d4..a0b031589 100644
--- a/src/lib/log.cc
+++ b/src/lib/log.cc
@@ -104,6 +104,11 @@ void
FileLog::do_log (string m)
{
FILE* f = fopen_boost (_file, "a");
+ if (!f) {
+ cout << "(could not log to " << _file.string() << "): " << m << "\n";
+ return;
+ }
+
fprintf (f, "%s\n", m.c_str ());
fclose (f);
}
diff --git a/src/lib/player.cc b/src/lib/player.cc
index 3e6a1598d..48c75078e 100644
--- a/src/lib/player.cc
+++ b/src/lib/player.cc
@@ -450,6 +450,10 @@ Player::setup_pieces ()
for (ContentList::iterator i = content.begin(); i != content.end(); ++i) {
+ if (!(*i)->paths_valid ()) {
+ continue;
+ }
+
shared_ptr<Decoder> decoder;
optional<FrameRateChange> frc;
@@ -566,6 +570,7 @@ Player::content_changed (weak_ptr<Content> w, int property, bool frequent)
} else if (property == ContentProperty::PATH) {
+ _have_valid_pieces = false;
Changed (frequent);
}
}
diff --git a/src/lib/po/it_IT.po b/src/lib/po/it_IT.po
index a9a4a6000..584baad6e 100644
--- a/src/lib/po/it_IT.po
+++ b/src/lib/po/it_IT.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: IT VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-01-30 21:51+0000\n"
-"PO-Revision-Date: 2013-04-28 10:26+0100\n"
-"Last-Translator: Maci <macibro@gmail.com>\n"
+"PO-Revision-Date: 2014-02-03 10:48+0100\n"
+"Last-Translator: William Fanelli <william.f@impronte.com>\n"
"Language-Team: \n"
-"Language: Italiano\n"
+"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.5.5\n"
+"X-Generator: Poedit 1.6.3\n"
#: src/lib/sndfile_content.cc:60
msgid "%1 [audio]"
@@ -30,9 +30,8 @@ msgid "%1 channels, %2kHz, %3 samples"
msgstr ""
#: src/lib/ffmpeg_content.cc:237
-#, fuzzy
msgid "%1 frames; %2 frames per second"
-msgstr "fotogrammi al secondo"
+msgstr "%1 fotogrammi; %2 fotogrammi al secondo"
#: src/lib/video_content.cc:200
msgid "%1x%2 pixels (%3:1)"
@@ -149,14 +148,14 @@ msgid "Content to be joined must have the same ratio."
msgstr ""
#: src/lib/subtitle_content.cc:74
-#, fuzzy
msgid "Content to be joined must have the same subtitle X offset."
-msgstr "Il DCP e il sorgente hanno la stessa frequenza."
+msgstr ""
+"Il contenuto da unire deve avere lo stesso spostamento X dei sottotitoli."
#: src/lib/subtitle_content.cc:78
-#, fuzzy
msgid "Content to be joined must have the same subtitle Y offset."
-msgstr "Il DCP e il sorgente hanno la stessa frequenza."
+msgstr ""
+"Il contenuto da unire deve avere lo stesso spostamento Y dei sottotitoli."
#: src/lib/subtitle_content.cc:82
msgid "Content to be joined must have the same subtitle scale."
@@ -191,9 +190,8 @@ msgid "Could not create remote directory %1 (%2)"
msgstr "Non posso creare la directory remota %1 (%2)"
#: src/lib/job.cc:94
-#, fuzzy
msgid "Could not open %1"
-msgstr "non riesco ad aprire %1"
+msgstr "Non riesco ad aprire %1"
#: src/lib/scp_dcp_job.cc:176
msgid "Could not open %1 to send"
@@ -230,6 +228,8 @@ msgid ""
"DCP-o-matic could not open the file %1. Perhaps it does not exist or is in "
"an unexpected format."
msgstr ""
+"DCP-o-matic non può aprire il file %1. Non esiste oppure è in un formato non "
+"riconosciuto."
#: src/lib/filter.cc:68 src/lib/filter.cc:69 src/lib/filter.cc:70
#: src/lib/filter.cc:71 src/lib/filter.cc:72 src/lib/filter.cc:73
@@ -253,6 +253,14 @@ msgid ""
"Best regards,\n"
"DCP-o-matic"
msgstr ""
+"Spett. Proiezionista\n"
+"\n"
+"troverà in allegato le KDMs per $CPL_NAME.\n"
+"\n"
+"Le KDM sono valide da $START_TIME fino a $END_TIME.\n"
+"\n"
+"Distinti saluti,\n"
+"DCP-o-matic"
#: src/lib/filter.cc:74
msgid "Deringing filter"
@@ -264,14 +272,12 @@ msgid "Dolby CP650 and CP750"
msgstr "Dolby CP750"
#: src/lib/util.cc:803
-#, fuzzy
msgid "Each content frame will be doubled in the DCP.\n"
-msgstr "Ogni fotogramma del sorgente sarà raddoppiato nel DCP.\n"
+msgstr "Ogni fotogramma del sorgente sarà duplicato nel DCP.\n"
#: src/lib/util.cc:805
-#, fuzzy
msgid "Each content frame will be repeated %1 more times in the DCP.\n"
-msgstr "Ogni fotogramma del sorgente sarà raddoppiato nel DCP.\n"
+msgstr "Ogni fotogramma del sorgente sarà ripetuto %1 volte nel DCP.\n"
#: src/lib/send_kdm_email_job.cc:50
msgid "Email KDMs for %1"
@@ -291,11 +297,11 @@ msgstr "Esamino il contenuto"
#: src/lib/filter.cc:72
msgid "Experimental horizontal deblocking filter 1"
-msgstr "Filtro di sblocco sperimentale orizzontale 1"
+msgstr "Filtro deblocking orizzontale sperimentale 1"
#: src/lib/filter.cc:73
msgid "Experimental vertical deblocking filter 1"
-msgstr "Filtro di sblocco sperimentale verticale 1"
+msgstr "Filtro deblocking verticale sperimentale 1"
#: src/lib/filter.cc:79
msgid "FFMPEG deinterlacer"
@@ -327,7 +333,7 @@ msgstr "Forza quantizzatore"
#: src/lib/ratio.cc:43
msgid "Full frame"
-msgstr ""
+msgstr "Schermo intero"
#: src/lib/scaler.cc:65
msgid "Gaussian"
@@ -343,11 +349,11 @@ msgstr "Riduttore di rumore 3D di alta qualità"
#: src/lib/filter.cc:68
msgid "Horizontal deblocking filter"
-msgstr "Filtro sblocco orizzontale"
+msgstr "Filtro deblocking orizzontale"
#: src/lib/filter.cc:70
msgid "Horizontal deblocking filter A"
-msgstr "Filtro A sblocco orizzontale"
+msgstr "Filtro deblocking orizzontale A"
#: src/lib/job.cc:108 src/lib/job.cc:117
msgid ""
@@ -396,7 +402,7 @@ msgstr "Varie"
#: src/lib/filter.cc:81
msgid "Motion compensating deinterlacer"
-msgstr "Dinterlacciatore compensativo di movimento"
+msgstr "Dinterlacciatore con compensazione di movimento"
#: src/lib/filter.cc:84 src/lib/filter.cc:88 src/lib/filter.cc:89
#: src/lib/filter.cc:91
@@ -494,6 +500,10 @@ msgid ""
"unfortunately it cannot be loaded into this version. You will need to "
"create a new Film, re-add your content and set it up again. Sorry!"
msgstr ""
+"Questo film è stato creato con una vecchia versione di DCP-o-matic, e "
+"purtroppo non può essere caricato in questa versione. Sarà necessario creare "
+"un nuovo film, ri-aggiungere i tuoi contenuti e configurarlo di nuovo. Ci "
+"dispiace!"
#: src/lib/dcp_content_type.cc:46
msgid "Trailer"
@@ -521,7 +531,7 @@ msgstr "Maschera unsharp e sfocatura Gaussiana"
#: src/lib/colour_conversion.cc:145
msgid "Untitled"
-msgstr ""
+msgstr "Senza titolo"
#: src/lib/filter.cc:69
msgid "Vertical deblocking filter"
@@ -545,7 +555,7 @@ msgstr "Altro filtro di deinterlacciamento"
#: src/lib/film.cc:289
msgid "You must add some content to the DCP before creating it"
-msgstr ""
+msgstr "Devi aggiungere dei contenuti al DCP prima di crearlo"
#: src/lib/image_content.cc:68
msgid "[moving images]"
@@ -569,9 +579,8 @@ msgid "connecting"
msgstr "mi sto connettendo"
#: src/lib/film.cc:285
-#, fuzzy
msgid "container"
-msgstr "contenuto"
+msgstr "contenitore"
#: src/lib/film.cc:293
msgid "content type"
@@ -606,9 +615,8 @@ msgid "could not move audio MXF into the DCP (%1)"
msgstr ""
#: src/lib/sndfile_decoder.cc:45
-#, fuzzy
msgid "could not open audio file for reading"
-msgstr "non riesco ad aprire il file per leggerlo"
+msgstr "non riesco ad aprire il file in lettura"
#: src/lib/exceptions.cc:29
msgid "could not open file %1"
@@ -720,7 +728,7 @@ msgstr "sRGB"
#: src/lib/config.cc:82
msgid "sRGB non-linearised"
-msgstr ""
+msgstr "sRGB non linearizzato"
#: src/lib/util.cc:160
msgid "seconds"
diff --git a/src/lib/scp_dcp_job.cc b/src/lib/scp_dcp_job.cc
index 310303c09..22715978a 100644
--- a/src/lib/scp_dcp_job.cc
+++ b/src/lib/scp_dcp_job.cc
@@ -191,8 +191,10 @@ SCPDCPJob::run ()
}
to_do -= t;
bytes_transferred += t;
-
- set_progress ((double) bytes_transferred / bytes_to_transfer);
+
+ if (bytes_to_transfer > 0) {
+ set_progress ((double) bytes_transferred / bytes_to_transfer);
+ }
}
fclose (f);
diff --git a/src/lib/server_finder.cc b/src/lib/server_finder.cc
index 5b67d8048..3d5825ad4 100644
--- a/src/lib/server_finder.cc
+++ b/src/lib/server_finder.cc
@@ -65,8 +65,12 @@ try
while (1) {
if (Config::instance()->use_any_servers ()) {
/* Broadcast to look for servers */
- boost::asio::ip::udp::endpoint end_point (boost::asio::ip::address_v4::broadcast(), Config::instance()->server_port_base() + 1);
- socket.send_to (boost::asio::buffer (data.c_str(), data.size() + 1), end_point);
+ try {
+ boost::asio::ip::udp::endpoint end_point (boost::asio::ip::address_v4::broadcast(), Config::instance()->server_port_base() + 1);
+ socket.send_to (boost::asio::buffer (data.c_str(), data.size() + 1), end_point);
+ } catch (...) {
+
+ }
}
/* Query our `definite' servers (if there are any) */
@@ -104,6 +108,7 @@ try
try {
sock->accept (Config::instance()->server_port_base() + 1);
} catch (std::exception& e) {
+ dcpomatic_sleep (60);
continue;
}
diff --git a/src/lib/transcode_job.cc b/src/lib/transcode_job.cc
index 289259369..46fc97fb3 100644
--- a/src/lib/transcode_job.cc
+++ b/src/lib/transcode_job.cc
@@ -100,17 +100,20 @@ TranscodeJob::status () const
int
TranscodeJob::remaining_time () const
{
- if (!_transcoder) {
+ /* _transcoder might be destroyed by the job-runner thread */
+ shared_ptr<Transcoder> t = _transcoder;
+
+ if (!t) {
return 0;
}
- float fps = _transcoder->current_encoding_rate ();
+ float fps = t->current_encoding_rate ();
if (fps == 0) {
return 0;
}
/* Compute approximate proposed length here, as it's only here that we need it */
- VideoFrame const left = _film->time_to_video_frames (_film->length ()) - _transcoder->video_frames_out();
+ VideoFrame const left = _film->time_to_video_frames (_film->length ()) - t->video_frames_out();
return left / fps;
}
diff --git a/src/lib/util.cc b/src/lib/util.cc
index ef203c2bd..418d7b3e0 100644
--- a/src/lib/util.cc
+++ b/src/lib/util.cc
@@ -27,6 +27,7 @@
#include <iostream>
#include <fstream>
#include <climits>
+#include <stdexcept>
#ifdef DCPOMATIC_POSIX
#include <execinfo.h>
#include <cxxabi.h>
@@ -93,7 +94,9 @@ using std::istream;
using std::numeric_limits;
using std::pair;
using std::cout;
+using std::bad_alloc;
using std::streampos;
+using std::set_terminate;
using boost::shared_ptr;
using boost::thread;
using boost::lexical_cast;
@@ -272,6 +275,33 @@ LONG WINAPI exception_handler(struct _EXCEPTION_POINTERS *)
}
#endif
+/* From http://stackoverflow.com/questions/2443135/how-do-i-find-where-an-exception-was-thrown-in-c */
+void
+terminate ()
+{
+ static bool tried_throw = false;
+
+ try {
+ // try once to re-throw currently active exception
+ if (!tried_throw++) {
+ throw;
+ }
+ }
+ catch (const std::exception &e) {
+ std::cerr << __FUNCTION__ << " caught unhandled exception. what(): "
+ << e.what() << std::endl;
+ }
+ catch (...) {
+ std::cerr << __FUNCTION__ << " caught unknown/unhandled exception."
+ << std::endl;
+ }
+
+#ifdef DCPOMATIC_POSIX
+ stacktrace (cout, 50);
+#endif
+ abort();
+}
+
/** Call the required functions to set up DCP-o-matic's static arrays, etc.
* Must be called from the UI thread, if there is one.
*/
@@ -308,7 +338,9 @@ dcpomatic_setup ()
boost::filesystem::path lib = app_contents ();
lib /= "lib";
setenv ("LTDL_LIBRARY_PATH", lib.c_str (), 1);
-#endif
+#endif
+
+ set_terminate (terminate);
Pango::init ();
libdcp::init ();
@@ -926,3 +958,13 @@ time_round_up (DCPTime t, DCPTime nearest)
DCPTime const a = t + nearest - 1;
return a - (a % nearest);
}
+
+void *
+wrapped_av_malloc (size_t s)
+{
+ void* p = av_malloc (s);
+ if (!p) {
+ throw bad_alloc ();
+ }
+ return p;
+}
diff --git a/src/lib/util.h b/src/lib/util.h
index a84e7e4cf..d3e6a67de 100644
--- a/src/lib/util.h
+++ b/src/lib/util.h
@@ -126,6 +126,7 @@ extern float get_required_float (std::multimap<std::string, std::string> const &
extern std::string get_required_string (std::multimap<std::string, std::string> const & kv, std::string k);
extern int get_optional_int (std::multimap<std::string, std::string> const & kv, std::string k);
extern std::string get_optional_string (std::multimap<std::string, std::string> const & kv, std::string k);
+extern void* wrapped_av_malloc (size_t);
/** @class Socket
* @brief A class to wrap a boost::asio::ip::tcp::socket with some things
diff --git a/src/lib/writer.cc b/src/lib/writer.cc
index c2a6c981b..42187dc6e 100644
--- a/src/lib/writer.cc
+++ b/src/lib/writer.cc
@@ -541,7 +541,9 @@ Writer::check_existing_picture_mxf ()
shared_ptr<Job> job = _job.lock ();
assert (job);
- job->set_progress (float (_first_nonexistant_frame) / N);
+ if (N > 0) {
+ job->set_progress (float (_first_nonexistant_frame) / N);
+ }
if (_film->three_d ()) {
if (!check_existing_picture_mxf_frame (mxf, _first_nonexistant_frame, EYES_LEFT)) {
diff --git a/src/lib/wscript b/src/lib/wscript
index 8a20618c0..a5b069184 100644
--- a/src/lib/wscript
+++ b/src/lib/wscript
@@ -69,7 +69,7 @@ sources = """
"""
def build(bld):
- if bld.env.STATIC:
+ if bld.env.BUILD_STATIC:
obj = bld(features = 'cxx cxxstlib')
else:
obj = bld(features = 'cxx cxxshlib')
@@ -88,7 +88,7 @@ def build(bld):
if bld.env.TARGET_WINDOWS:
obj.uselib += ' WINSOCK2 BFD DBGHELP IBERTY SHLWAPI MSWSOCK BOOST_LOCALE'
obj.source += ' stack.cpp'
- if bld.env.STATIC:
+ if bld.env.BUILD_STATIC:
obj.uselib += ' XML++'
obj.target = 'dcpomatic'
diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc
index 1e60d9690..70e675e40 100644
--- a/src/tools/dcpomatic.cc
+++ b/src/tools/dcpomatic.cc
@@ -474,8 +474,10 @@ private:
shared_ptr<Job> (new SendKDMEmailJob (film, d->screens (), d->dcp (), d->from (), d->until ()))
);
}
- } catch (KDMError& e) {
+ } catch (exception& e) {
error_dialog (this, e.what ());
+ } catch (...) {
+ error_dialog (this, _("An unknown exeception occurred."));
}
d->Destroy ();
diff --git a/src/tools/dcpomatic_create.cc b/src/tools/dcpomatic_create.cc
index 8be468b30..8dc4de50e 100644
--- a/src/tools/dcpomatic_create.cc
+++ b/src/tools/dcpomatic_create.cc
@@ -20,6 +20,7 @@
#include <string>
#include <iostream>
#include <cstdlib>
+#include <stdexcept>
#include <getopt.h>
#include <boost/filesystem.hpp>
#include "lib/version.h"
@@ -34,6 +35,7 @@ using std::string;
using std::cout;
using std::cerr;
using std::list;
+using std::exception;
using boost::shared_ptr;
static void
@@ -98,31 +100,37 @@ main (int argc, char* argv[])
dcpomatic_setup ();
ui_signaller = new UISignaller ();
- shared_ptr<Film> film (new Film (output));
- if (!name.empty ()) {
- film->set_name (name);
- }
-
- for (int i = optind; i < argc; ++i) {
- film->examine_and_add_content (content_factory (film, argv[i]));
- }
-
- JobManager* jm = JobManager::instance ();
- while (jm->work_to_do ()) {
- ui_signaller->ui_idle ();
- }
-
- if (jm->errors ()) {
- list<shared_ptr<Job> > jobs = jm->get ();
- for (list<shared_ptr<Job> >::iterator i = jobs.begin(); i != jobs.end(); ++i) {
- if ((*i)->finished_in_error ()) {
- cerr << (*i)->error_summary () << "\n"
- << (*i)->error_details () << "\n";
+ try {
+ shared_ptr<Film> film (new Film (output));
+ if (!name.empty ()) {
+ film->set_name (name);
+ }
+
+ for (int i = optind; i < argc; ++i) {
+ film->examine_and_add_content (content_factory (film, argv[i]));
+ }
+
+ JobManager* jm = JobManager::instance ();
+ while (jm->work_to_do ()) {
+ ui_signaller->ui_idle ();
+ }
+
+ if (jm->errors ()) {
+ list<shared_ptr<Job> > jobs = jm->get ();
+ for (list<shared_ptr<Job> >::iterator i = jobs.begin(); i != jobs.end(); ++i) {
+ if ((*i)->finished_in_error ()) {
+ cerr << (*i)->error_summary () << "\n"
+ << (*i)->error_details () << "\n";
+ }
}
+ exit (EXIT_FAILURE);
}
+
+ film->write_metadata ();
+ } catch (exception& e) {
+ cerr << argv[0] << ": " << e.what() << "\n";
exit (EXIT_FAILURE);
}
-
- film->write_metadata ();
+
return 0;
}
diff --git a/src/tools/po/it_IT.po b/src/tools/po/it_IT.po
index f63169721..15276515b 100644
--- a/src/tools/po/it_IT.po
+++ b/src/tools/po/it_IT.po
@@ -8,18 +8,18 @@ msgstr ""
"Project-Id-Version: IT VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-01-30 21:51+0000\n"
-"PO-Revision-Date: 2013-04-28 10:31+0100\n"
-"Last-Translator: Maci <macibro@gmail.com>\n"
+"PO-Revision-Date: 2014-02-03 09:36+0100\n"
+"Last-Translator: William Fanelli <william.f@impronte.com>\n"
"Language-Team: \n"
-"Language: Italiano\n"
+"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.5.5\n"
+"X-Generator: Poedit 1.6.3\n"
#: src/tools/dcpomatic.cc:366
msgid "%1 already exists as a file, so you cannot use it for a new film."
-msgstr ""
+msgstr "%1 esiste già il file, non è possibile usarlo per un nuovo film"
#: src/tools/dcpomatic.cc:241
msgid "&Edit"
@@ -27,7 +27,7 @@ msgstr "&Modifica"
#: src/tools/dcpomatic.cc:208
msgid "&Exit"
-msgstr ""
+msgstr "&Esci"
#: src/tools/dcpomatic.cc:239
msgid "&File"
@@ -71,20 +71,19 @@ msgstr "&Invia DCP a TMS"
#: src/tools/dcpomatic.cc:244
msgid "&Tools"
-msgstr ""
+msgstr "&Strumenti"
#: src/tools/dcpomatic.cc:236
msgid "About"
msgstr "Informazioni"
#: src/tools/dcpomatic.cc:234
-#, fuzzy
msgid "About DCP-o-matic"
-msgstr "DVD-o-matic"
+msgstr "Su DVD-o-matic"
#: src/tools/dcpomatic.cc:230
msgid "Check for updates"
-msgstr ""
+msgstr "Controlla aggiornamenti"
#: src/tools/dcpomatic.cc:633
msgid "Could not load film %1 (%2)"
@@ -105,9 +104,8 @@ msgstr ""
#: src/tools/dcpomatic.cc:337 src/tools/dcpomatic.cc:591
#: src/tools/dcpomatic.cc:644
-#, fuzzy
msgid "DCP-o-matic"
-msgstr "DVD-o-matic"
+msgstr "DCP-o-matic"
#: src/tools/dcpomatic.cc:229
msgid "Encoding servers..."
@@ -119,7 +117,7 @@ msgstr "Film modificato"
#: src/tools/dcpomatic.cc:228
msgid "Hints..."
-msgstr ""
+msgstr "Suggerimenti..."
#: src/tools/dcpomatic.cc:223
msgid "Make &KDMs..."
@@ -148,34 +146,38 @@ msgid ""
"The DCP for this film will take up about %.1f Gb, and the disk that you are "
"using only has %.1f Gb available. Do you want to continue anyway?"
msgstr ""
+"Il DCP di questo film occupa %.1f Gb, ma il disco che stai usando dispone di "
+"%.1f Gb liberi. Vuoi continuare ugualmente?"
#: src/tools/dcpomatic.cc:728
msgid "The DCP-o-matic download server could not be contacted."
-msgstr ""
+msgstr "Il download server di DCP-o-matic non può essere contattato."
#: src/tools/dcpomatic.cc:356
msgid ""
"The directory %1 already exists and is not empty. Are you sure you want to "
"use it?"
-msgstr ""
+msgstr "La cartella %1 esiste già e non è vuota. Sei sicuro di volerla usare?"
#: src/tools/dcpomatic.cc:723
msgid "There are no new versions of DCP-o-matic available."
-msgstr ""
+msgstr "Non ci sono nuove versioni di DCP-o-matic disponibili."
#: src/tools/dcpomatic.cc:553
msgid "There are unfinished jobs; are you sure you want to quit?"
-msgstr ""
+msgstr "C'è un processo in corso: sei sicuro di voler uscire?"
#: src/tools/dcpomatic.cc:554
msgid "Unfinished jobs"
-msgstr ""
+msgstr "Processo in corso"
#: src/tools/dcpomatic.cc:395
msgid ""
"You did not select a folder. Make sure that you select a folder before "
"clicking Open."
msgstr ""
+"Non hai selezionato una cartella. Assicurati di selezionare una cartella "
+"prima di cliccare Apri."
#~ msgid "&Analyse audio"
#~ msgstr "&Analizza audio"
diff --git a/src/tools/server_test.cc b/src/tools/server_test.cc
index 38e4704b7..9b725cb86 100644
--- a/src/tools/server_test.cc
+++ b/src/tools/server_test.cc
@@ -142,14 +142,14 @@ main (int argc, char* argv[])
dcpomatic_setup ();
- server = new ServerDescription (server_host, 1);
- film.reset (new Film (film_dir));
- film->read_metadata ();
-
- shared_ptr<Player> player = film->make_player ();
- player->disable_audio ();
-
try {
+ server = new ServerDescription (server_host, 1);
+ film.reset (new Film (film_dir));
+ film->read_metadata ();
+
+ shared_ptr<Player> player = film->make_player ();
+ player->disable_audio ();
+
player->Video.connect (boost::bind (process_video, _1, _2, _3, _5));
bool done = false;
while (!done) {
diff --git a/src/tools/wscript b/src/tools/wscript
index 0fd336676..131d02b81 100644
--- a/src/tools/wscript
+++ b/src/tools/wscript
@@ -11,17 +11,19 @@ def configure(conf):
def build(bld):
for t in ['dcpomatic_cli', 'dcpomatic_server_cli', 'server_test', 'dcpomatic_kdm', 'dcpomatic_create']:
obj = bld(features = 'cxx cxxprogram')
- obj.uselib = 'BOOST_THREAD OPENJPEG DCP CXML AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC WXWIDGETS QUICKMAIL'
+ obj.uselib = 'BOOST_THREAD BOOST_DATETIME OPENJPEG DCP CXML AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC WXWIDGETS QUICKMAIL'
obj.includes = ['..']
obj.use = ['libdcpomatic']
obj.source = '%s.cc' % t
obj.target = t
+ if t == 'server_test':
+ obj.install_path = None
if not bld.env.DISABLE_GUI:
for t in ['dcpomatic', 'dcpomatic_batch', 'dcpomatic_server']:
obj = bld(features = 'cxx cxxprogram')
- obj.uselib = 'DCP OPENJPEG AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC CXML WXWIDGETS QUICKMAIL'
- if bld.env.STATIC:
+ obj.uselib = 'BOOST_THREAD BOOST_DATETIME OPENJPEG DCP CXML AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC CXML WXWIDGETS QUICKMAIL'
+ if bld.env.BUILD_STATIC:
obj.uselib += ' GTK'
obj.includes = ['..']
obj.use = ['libdcpomatic', 'libdcpomatic-wx']
diff --git a/src/wx/about_dialog.cc b/src/wx/about_dialog.cc
index 5f801bfe4..5fa5014f0 100644
--- a/src/wx/about_dialog.cc
+++ b/src/wx/about_dialog.cc
@@ -95,6 +95,7 @@ AboutDialog::AboutDialog (wxWindow* parent)
translated_by.Add (wxT ("Lilian Lefranc"));
translated_by.Add (wxT ("Thierry Journet"));
translated_by.Add (wxT ("Massimiliano Broggi"));
+ translated_by.Add (wxT ("William Fanelli"));
translated_by.Add (wxT ("Manuel AC"));
translated_by.Add (wxT ("Adam Klotblixt"));
translated_by.Add (wxT ("Markus Raab"));
diff --git a/src/wx/audio_plot.cc b/src/wx/audio_plot.cc
index 96de34d40..0868d931a 100644
--- a/src/wx/audio_plot.cc
+++ b/src/wx/audio_plot.cc
@@ -259,7 +259,9 @@ AudioPlot::plot_rms (wxGraphicsPath& path, int channel) const
p += pow (*j, 2);
}
- p = sqrt (p / smoothing.size ());
+ if (smoothing.size() > 0) {
+ p = sqrt (p / smoothing.size ());
+ }
path.AddLineToPoint (_db_label_width + i * _x_scale, y_for_linear (p));
}
diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc
index a4a293918..deee65a5f 100644
--- a/src/wx/film_viewer.cc
+++ b/src/wx/film_viewer.cc
@@ -46,6 +46,7 @@ using std::min;
using std::max;
using std::cout;
using std::list;
+using std::bad_alloc;
using std::make_pair;
using boost::shared_ptr;
using boost::dynamic_pointer_cast;
@@ -127,7 +128,14 @@ FilmViewer::set_film (shared_ptr<Film> f)
return;
}
- _player = f->make_player ();
+ try {
+ _player = f->make_player ();
+ } catch (bad_alloc) {
+ error_dialog (this, _("There is not enough free memory to do that."));
+ _film.reset ();
+ return;
+ }
+
_player->disable_audio ();
_player->set_approximate_size ();
_player->Video.connect (boost::bind (&FilmViewer::process_video, this, _1, _2, _5));
diff --git a/src/wx/po/it_IT.po b/src/wx/po/it_IT.po
index 08852b886..00d1ac09a 100644
--- a/src/wx/po/it_IT.po
+++ b/src/wx/po/it_IT.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: IT VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-01-30 21:51+0000\n"
-"PO-Revision-Date: 2013-04-28 10:27+0100\n"
-"Last-Translator: Maci <macibro@gmail.com>\n"
+"PO-Revision-Date: 2014-02-03 10:46+0100\n"
+"Last-Translator: William Fanelli <william.f@impronte.com>\n"
"Language-Team: \n"
-"Language: Italiano\n"
+"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.5.5\n"
+"X-Generator: Poedit 1.6.3\n"
#: src/wx/subtitle_panel.cc:48 src/wx/subtitle_panel.cc:57
#: src/wx/subtitle_panel.cc:66
@@ -73,32 +73,31 @@ msgstr ""
#: src/wx/update_dialog.cc:34
msgid "A new version of DCP-o-matic is available."
-msgstr ""
+msgstr "Una nuova versione di DCP-o-matic è disponibile"
#: src/wx/about_dialog.cc:30
-#, fuzzy
msgid "About DCP-o-matic"
-msgstr "DCP-o-matic"
+msgstr "Su DCP-o-matic"
#: src/wx/kdm_dialog.cc:66
msgid "Add Cinema..."
-msgstr ""
+msgstr "Aggiungi Cinema"
#: src/wx/kdm_dialog.cc:73
msgid "Add Screen..."
-msgstr ""
+msgstr "Aggiungi Schermo"
#: src/wx/film_editor.cc:272
msgid "Add file(s)..."
-msgstr ""
+msgstr "Aggiungi File"
#: src/wx/film_editor.cc:274
msgid "Add folder..."
-msgstr ""
+msgstr "Aggiungi cartella"
#: src/wx/editable_list.h:61
msgid "Add..."
-msgstr ""
+msgstr "Aggiungi..."
#: src/wx/audio_dialog.cc:33 src/wx/audio_panel.cc:40
msgid "Audio"
@@ -117,20 +116,19 @@ msgid "Audio Language (e.g. EN)"
msgstr "Lingua dell'audio (es. EN)"
#: src/wx/audio_panel.cc:81
-#, fuzzy
msgid "Audio Stream"
-msgstr "Ritardo dell'audio"
+msgstr "Traccia Audio"
#: src/wx/film_editor.cc:161
-#, fuzzy
msgid "Audio channels"
-msgstr "canali"
+msgstr "Canali audio"
#: src/wx/audio_mapping_view.cc:325
#, c-format
msgid ""
"Audio will be passed from content channel %d to DCP channel %d unaltered."
msgstr ""
+"L' audio sarà trasferito dal canale %d sorgente al canale %d DCP inalterato."
#: src/wx/audio_mapping_view.cc:328
#, c-format
@@ -138,6 +136,8 @@ msgid ""
"Audio will be passed from content channel %d to DCP channel %d with gain "
"%.1fdB."
msgstr ""
+"L' audio sarà trasferito dal canale %d sorgente al canale %d DCP con "
+"guadagno di %.1fdB."
#: src/wx/job_wrapper.cc:38
#, c-format
@@ -169,9 +169,8 @@ msgid "Cancel"
msgstr "Annulla"
#: src/wx/audio_gain_dialog.cc:26
-#, fuzzy
msgid "Channel gain"
-msgstr "Canali"
+msgstr "Guadagno audio"
#: src/wx/audio_dialog.cc:44
msgid "Channels"
@@ -179,62 +178,57 @@ msgstr "Canali"
#: src/wx/config_dialog.cc:143
msgid "Check for testing updates as well as stable ones"
-msgstr ""
+msgstr "Controlla per aggiornamenti test o stabili"
#: src/wx/config_dialog.cc:139
msgid "Check for updates on startup"
-msgstr ""
+msgstr "Controlla gli aggiornamentio alla partenza"
#: src/wx/content_menu.cc:182
-#, fuzzy
msgid "Choose a file"
-msgstr "Crea nella cartella"
+msgstr "Scegli un file"
#: src/wx/film_editor.cc:767
msgid "Choose a file or files"
-msgstr ""
+msgstr "Scegli uno o più file"
#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:790
-#, fuzzy
msgid "Choose a folder"
-msgstr "Crea nella cartella"
+msgstr "Scegli una cartella"
#: src/wx/content_colour_conversion_dialog.cc:33
#: src/wx/preset_colour_conversion_dialog.cc:30 src/wx/video_panel.cc:164
msgid "Colour conversion"
-msgstr ""
+msgstr "Conversione colore"
#: src/wx/config_dialog.cc:65
msgid "Colour conversions"
-msgstr ""
+msgstr "Conversioni colore"
#: src/wx/film_editor.cc:132
-#, fuzzy
msgid "Container"
-msgstr "Contenuto"
+msgstr "Contenitore"
#: src/wx/film_editor.cc:85
msgid "Content"
-msgstr "Contenuto"
+msgstr "Sorgente"
#: src/wx/film_editor.cc:137
msgid "Content Type"
-msgstr "Tipo di contenuto"
+msgstr "Tipo di sorgente"
#: src/wx/audio_mapping_view.cc:273
-#, fuzzy
msgid "Content channel"
-msgstr "1 canale"
+msgstr "Canale Sorgente"
#: src/wx/video_panel.cc:335
#, c-format
msgid "Content frame rate %.4f\n"
-msgstr ""
+msgstr "Freq. fotogrammi sorgente %.4f\n"
#: src/wx/dci_metadata_dialog.cc:35
-#, fuzzy
msgid "Content version"
-msgstr "Tipo di contenuto"
+msgstr "Tipo di sorgente"
#: src/wx/video_panel.cc:293
#, fuzzy, c-format
@@ -243,7 +237,7 @@ msgstr "Il video originale è %dx%d (%.2f:1)\n"
#: src/wx/audio_dialog.cc:136
msgid "Could not analyse audio."
-msgstr ""
+msgstr "Non posso analizzare l'audio."
#: src/wx/film_viewer.cc:332
#, c-format
@@ -275,7 +269,7 @@ msgstr ""
#: src/wx/dci_metadata_dialog.cc:30
msgid "DCI name"
-msgstr "Nome del DCP"
+msgstr "Nome DCI"
#: src/wx/film_editor.cc:87 src/wx/kdm_dialog.cc:102
msgid "DCP"
@@ -300,7 +294,7 @@ msgstr "Audio DCP-o-matic - %s"
#: src/wx/config_dialog.cc:216
msgid "Default DCI name details"
-msgstr "Dettagli del nome di default DCI"
+msgstr "Dettagli del nome DCI predefinito"
#: src/wx/config_dialog.cc:229
#, fuzzy
@@ -308,32 +302,28 @@ msgid "Default JPEG2000 bandwidth"
msgstr "Banda passante JPEG2000"
#: src/wx/config_dialog.cc:238
-#, fuzzy
msgid "Default audio delay"
-msgstr "Tipo di contenuto"
+msgstr "Ritardo audio predefinito"
#: src/wx/config_dialog.cc:220
-#, fuzzy
msgid "Default container"
-msgstr "Tipo di contenuto"
+msgstr "Contenitore predefinito"
#: src/wx/config_dialog.cc:224
-#, fuzzy
msgid "Default content type"
-msgstr "Tipo di contenuto"
+msgstr "Tipo sorgente predefinito"
#: src/wx/config_dialog.cc:208
msgid "Default directory for new films"
-msgstr "Directory di default per i nuovi films"
+msgstr "Cartella predefinita per i nuovi films"
#: src/wx/config_dialog.cc:200
-#, fuzzy
msgid "Default duration of still images"
-msgstr "Directory di default per i nuovi films"
+msgstr "Durata predefinita immagini statiche"
#: src/wx/config_dialog.cc:61
msgid "Defaults"
-msgstr ""
+msgstr "Predefiniti"
#: src/wx/film_editor.cc:128 src/wx/job_manager_view.cc:78
msgid "Details..."
@@ -348,14 +338,12 @@ msgid "Down"
msgstr ""
#: src/wx/kdm_dialog.cc:68
-#, fuzzy
msgid "Edit Cinema..."
-msgstr "Modifica..."
+msgstr "Modifica Cinema..."
#: src/wx/kdm_dialog.cc:75
-#, fuzzy
msgid "Edit Screen..."
-msgstr "Modifica..."
+msgstr "Modifica Schermo..."
#: src/wx/audio_mapping_view.cc:136 src/wx/config_dialog.cc:217
#: src/wx/video_panel.cc:157 src/wx/video_panel.cc:174
@@ -365,7 +353,7 @@ msgstr "Modifica..."
#: src/wx/cinema_dialog.cc:35
msgid "Email address for KDM delivery"
-msgstr ""
+msgstr "Indirizzo email per consegna KDM"
#: src/wx/servers_list_dialog.cc:30
#, fuzzy
@@ -379,7 +367,7 @@ msgstr "Servers di codifica"
#: src/wx/film_editor.cc:157
msgid "Encrypted"
-msgstr ""
+msgstr "Criptato"
#: src/wx/dci_metadata_dialog.cc:59
msgid "Facility (e.g. DLA)"
@@ -399,12 +387,11 @@ msgstr "Filtri"
#: src/wx/content_menu.cc:52
msgid "Find missing..."
-msgstr ""
+msgstr "Trova mancante..."
#: src/wx/film_editor.cc:143
-#, fuzzy
msgid "Frame Rate"
-msgstr "Frequenza fotogrammi del DCP"
+msgstr "Frequenza fotogrammi"
#: src/wx/properties_dialog.cc:41
msgid "Frames"
@@ -420,7 +407,7 @@ msgstr ""
#: src/wx/kdm_dialog.cc:85
msgid "From"
-msgstr ""
+msgstr "Da"
#: src/wx/config_dialog.cc:135
msgid "From address for KDM emails"
@@ -441,7 +428,7 @@ msgstr "Calcolatore del guadagno audio"
#: src/wx/audio_gain_dialog.cc:31
#, c-format
msgid "Gain for content channel %d in DCP channel %d"
-msgstr ""
+msgstr "Guadagno per il canale sorgente %d nel canale DCP %d"
#: src/wx/properties_dialog.cc:57
msgid "Gb"
@@ -449,7 +436,7 @@ msgstr "Gb"
#: src/wx/hints_dialog.cc:26
msgid "Hints"
-msgstr ""
+msgstr "Suggerimenti"
#: src/wx/servers_list_dialog.cc:40
msgid "Host"
@@ -502,7 +489,7 @@ msgstr ""
#: src/wx/film_editor.cc:290
msgid "Keep video in sequence"
-msgstr ""
+msgstr "Tieni i video in sequenza"
#: src/wx/audio_mapping_view.cc:276
msgid "L"
@@ -518,7 +505,7 @@ msgstr ""
#: src/wx/colour_conversion_editor.cc:49
msgid "Linearise input gamma curve for low values"
-msgstr ""
+msgstr "Linearizza la curva del gamma in ingresso per piccoli valori"
#: src/wx/audio_mapping_view.cc:292
#, fuzzy
@@ -527,7 +514,7 @@ msgstr "s"
#: src/wx/film_editor.cc:741
msgid "MISSING: "
-msgstr ""
+msgstr "MANCANTE:"
#: src/wx/config_dialog.cc:127
#, fuzzy
@@ -541,11 +528,11 @@ msgstr "Nome utente del TMS"
#: src/wx/kdm_dialog.cc:47
msgid "Make KDMs"
-msgstr ""
+msgstr "Crea KDM"
#: src/wx/colour_conversion_editor.cc:67
msgid "Matrix"
-msgstr ""
+msgstr "Matrice"
#: src/wx/config_dialog.cc:233 src/wx/film_editor.cc:180
msgid "Mbit/s"
@@ -560,9 +547,8 @@ msgid "Miscellaneous"
msgstr ""
#: src/wx/video_panel.cc:281
-#, fuzzy
msgid "Multiple content selected"
-msgstr "Tipo di contenuto"
+msgstr "Molteplici sorgenti selezionate"
#: src/wx/dir_picker_ctrl.cc:51
msgid "My Documents"
@@ -579,16 +565,16 @@ msgstr "Nuovo Film"
#: src/wx/update_dialog.cc:36
msgid "New versions of DCP-o-matic are available."
-msgstr ""
+msgstr "Una nuova versione di DCP-o-matic è disponibile."
#: src/wx/audio_mapping_view.cc:323
#, c-format
msgid "No audio will be passed from content channel %d to DCP channel %d."
-msgstr ""
+msgstr "Nessun audio sarà passato dal canale %d sorgente al canale %d del DCP"
#: src/wx/video_panel.cc:198
msgid "No stretch"
-msgstr ""
+msgstr "Nessuna distorsione"
#: src/wx/video_panel.cc:155 src/wx/video_panel.cc:249
msgid "None"
@@ -599,13 +585,12 @@ msgid "Off"
msgstr ""
#: src/wx/config_dialog.cc:119
-#, fuzzy
msgid "Outgoing mail server"
-msgstr "Servers di codifica"
+msgstr "Mail server posta in uscita"
#: src/wx/colour_conversion_editor.cc:78
msgid "Output gamma"
-msgstr ""
+msgstr "Gamma in uscita"
#: src/wx/dci_metadata_dialog.cc:63
msgid "Package Type (e.g. OV)"
@@ -623,7 +608,7 @@ msgstr "Password del TMS"
#: src/wx/job_manager_view.cc:72 src/wx/job_manager_view.cc:164
msgid "Pause"
-msgstr ""
+msgstr "Pausa"
#: src/wx/audio_dialog.cc:60
msgid "Peak"
@@ -643,7 +628,7 @@ msgstr "Attendere prego; sto analizzando l'audio..."
#: src/wx/timing_panel.cc:39
msgid "Position"
-msgstr ""
+msgstr "Posizione"
#: src/wx/audio_mapping_view.cc:280
msgid "R"
@@ -663,23 +648,20 @@ msgid "Remove"
msgstr "Rimuovi"
#: src/wx/kdm_dialog.cc:70
-#, fuzzy
msgid "Remove Cinema"
-msgstr "Rimuovi"
+msgstr "Rimuovi Cinema"
#: src/wx/kdm_dialog.cc:77
-#, fuzzy
msgid "Remove Screen"
-msgstr "Rimuovi"
+msgstr "Rimuovi Schermo"
#: src/wx/repeat_dialog.cc:33
msgid "Repeat"
msgstr ""
#: src/wx/repeat_dialog.cc:24
-#, fuzzy
msgid "Repeat Content"
-msgstr "Seleziona il file con il contenuto"
+msgstr "Ripeti il contenuto"
#: src/wx/content_menu.cc:50
msgid "Repeat..."
@@ -687,7 +669,7 @@ msgstr ""
#: src/wx/film_editor.cc:170
msgid "Resolution"
-msgstr ""
+msgstr "Risoluzione"
#: src/wx/job_manager_view.cc:167
msgid "Resume"
@@ -695,7 +677,7 @@ msgstr ""
#: src/wx/audio_mapping_view.cc:331
msgid "Right click to change gain."
-msgstr ""
+msgstr "Clicca il tasto destro per cambiare guadagno."
#: src/wx/video_panel.cc:101
msgid "Right crop"
@@ -711,9 +693,8 @@ msgid "SMPTE"
msgstr ""
#: src/wx/video_panel.cc:134
-#, fuzzy
msgid "Scale to"
-msgstr "Scaler"
+msgstr "Scala a"
#: src/wx/video_panel.cc:320
#, c-format
@@ -725,13 +706,12 @@ msgid "Scaler"
msgstr "Scaler"
#: src/wx/screen_dialog.cc:88
-#, fuzzy
msgid "Select Certificate File"
-msgstr "Seleziona il file con il contenuto"
+msgstr "Seleziona il file del Certificato"
#: src/wx/kdm_dialog.cc:136
msgid "Send by email"
-msgstr ""
+msgstr "Manda per email"
#: src/wx/server_dialog.cc:28
msgid "Server"
@@ -762,9 +742,8 @@ msgid "Snap"
msgstr ""
#: src/wx/update_dialog.cc:43
-#, fuzzy
msgid "Stable version "
-msgstr "Tipo di contenuto"
+msgstr "Versione stabile"
#: src/wx/film_editor.cc:185
msgid "Standard"
@@ -783,19 +762,16 @@ msgid "Subtitle Scale"
msgstr "Scala dei Sottotitoli"
#: src/wx/subtitle_panel.cc:70
-#, fuzzy
msgid "Subtitle Stream"
-msgstr "Scala dei Sottotitoli"
+msgstr "Traccia sottotitoli"
#: src/wx/subtitle_panel.cc:44
-#, fuzzy
msgid "Subtitle X Offset"
-msgstr "Sfalsamento dei Sottotitoli"
+msgstr "Spostamento X dei Sottotitoli"
#: src/wx/subtitle_panel.cc:53
-#, fuzzy
msgid "Subtitle Y Offset"
-msgstr "Sfalsamento dei Sottotitoli"
+msgstr "Spostamento Y dei Sottotitoli"
#: src/wx/subtitle_panel.cc:34
msgid "Subtitles"
@@ -806,9 +782,8 @@ msgid "Supported by"
msgstr ""
#: src/wx/config_dialog.cc:69
-#, fuzzy
msgid "TMS"
-msgstr "RMS"
+msgstr "TMS"
#: src/wx/config_dialog.cc:305
#, fuzzy
@@ -820,9 +795,8 @@ msgid "Territory (e.g. UK)"
msgstr "Nazione (es. UK)"
#: src/wx/update_dialog.cc:48
-#, fuzzy
msgid "Test version "
-msgstr "Tipo di contenuto"
+msgstr "Versione di test"
#: src/wx/content_menu.cc:223
msgid ""
@@ -830,10 +804,12 @@ msgid ""
"missing. Either try again with the correct content file or remove the "
"missing content."
msgstr ""
+"Il/i file sorgenteo che hai specificato sono diversi da quelli mancanti. "
+"Riprova oppure rimuovi la sorgente mancante."
#: src/wx/hints_dialog.cc:97
msgid "There are no hints: everything looks good!"
-msgstr ""
+msgstr "Non ci sono suggerimenti: sembra tutto a posto!"
#: src/wx/servers_list_dialog.cc:48
msgid "Threads"
@@ -848,9 +824,8 @@ msgid "Time"
msgstr "Tempo"
#: src/wx/timeline_dialog.cc:32
-#, fuzzy
msgid "Timeline"
-msgstr "Tempo"
+msgstr "Timeline"
#: src/wx/film_editor.cc:282
msgid "Timeline..."
@@ -869,14 +844,12 @@ msgid "Translated by"
msgstr ""
#: src/wx/timing_panel.cc:48
-#, fuzzy
msgid "Trim from end"
-msgstr "Taglia fotogrammi"
+msgstr "Taglia dalla fine"
#: src/wx/timing_panel.cc:45
-#, fuzzy
msgid "Trim from start"
-msgstr "Taglia fotogrammi"
+msgstr "Taglia dall'inizio"
#: src/wx/audio_dialog.cc:55 src/wx/video_panel.cc:77
msgid "Type"
@@ -884,15 +857,15 @@ msgstr "Tipo"
#: src/wx/kdm_dialog.cc:91
msgid "Until"
-msgstr ""
+msgstr "Fino a"
#: src/wx/film_editor.cc:278
msgid "Up"
-msgstr ""
+msgstr "Su"
#: src/wx/update_dialog.cc:27
msgid "Update"
-msgstr ""
+msgstr "Aggiorna"
#: src/wx/film_editor.cc:126
msgid "Use DCI name"
@@ -900,30 +873,27 @@ msgstr "Usa nome DCI"
#: src/wx/config_dialog.cc:369
msgid "Use all servers"
-msgstr ""
+msgstr "Usa tutti i server"
#: src/wx/film_editor.cc:147
msgid "Use best"
msgstr "Usa la migliore"
#: src/wx/content_colour_conversion_dialog.cc:41
-#, fuzzy
msgid "Use preset"
-msgstr "Usa la migliore"
+msgstr "Usa predefinito"
#: src/wx/config_dialog.cc:309
-#, fuzzy
msgid "User name"
-msgstr "Usa nome DCI"
+msgstr "Nome utente"
#: src/wx/video_panel.cc:70
msgid "Video"
msgstr "Video"
#: src/wx/timing_panel.cc:56
-#, fuzzy
msgid "Video frame rate"
-msgstr "Frequenza fotogrammi del DCP"
+msgstr "Frequenza fotogrammi video"
#: src/wx/subtitle_panel.cc:39
msgid "With Subtitles"
@@ -943,6 +913,8 @@ msgid ""
"You have %d files that look like they are VOB files from DVD. You should "
"join them to ensure smooth joins between the files."
msgstr ""
+"Ci sono %d file che sembrano essere DVD VOB. Dovresti unirli per assicurare "
+"una giunta senza interruzioni tra i file."
#: src/wx/hints_dialog.cc:76
#, c-format
@@ -950,18 +922,25 @@ msgid ""
"Your DCP frame rate (%d fps) may cause problems in a few (mostly older) "
"projectors. Use 24 or 48 frames per second to be on the safe side."
msgstr ""
+"La frequenza fotogrammi scelta per questo DCP (%d fps) potrebbe creare "
+"problemi in alcuni (per lo più vecchi) proiettori. Usa 24 o 48 frame al "
+"secondo se vuoi esssere sicuro."
#: src/wx/hints_dialog.cc:66
msgid ""
"Your DCP has an odd number of audio channels. This is very likely to cause "
"problems on playback."
msgstr ""
+"Il vostro DCP ha un numero dispari di canali audio. Questo può causare "
+"problemi durante la riproduzione."
#: src/wx/hints_dialog.cc:70
msgid ""
"Your DCP has fewer than 6 audio channels. This may cause problems on some "
"projectors."
msgstr ""
+"Il vostro DCP ha meno di 6 canali audio. Questo può causare problemi su "
+"alcuni proiettori."
#: src/wx/timeline.cc:213
#, fuzzy
diff --git a/src/wx/timeline.cc b/src/wx/timeline.cc
index 2119e7813..ac26c77a9 100644
--- a/src/wx/timeline.cc
+++ b/src/wx/timeline.cc
@@ -474,7 +474,7 @@ void
DCPTimeline::setup_pixels_per_time_unit ()
{
shared_ptr<const Film> film = _film.lock ();
- if (!film) {
+ if (!film || film->length() == 0) {
return;
}
diff --git a/src/wx/wscript b/src/wx/wscript
index 9de32d39e..1ffaa6097 100644
--- a/src/wx/wscript
+++ b/src/wx/wscript
@@ -47,13 +47,13 @@ sources = """
def configure(conf):
args = '--cppflags --cxxflags'
- if not conf.env.STATIC:
+ if not conf.env.BUILD_STATIC:
args += ' --libs std,richtext'
conf.check_cfg(msg='Checking for wxWidgets', package='', path=conf.options.wx_config, args=args,
uselib_store='WXWIDGETS', mandatory=True)
- if conf.env.STATIC:
+ if conf.env.BUILD_STATIC:
# wx-config returns its static libraries as full paths, without -l prefixes, which confuses
# check_cfg(), so just hard-code it all.
conf.env.STLIB_WXWIDGETS = ['wx_gtk2u_richtext-3.0', 'wx_gtk2u_xrc-3.0', 'wx_gtk2u_qa-3.0', 'wx_baseu_net-3.0', 'wx_gtk2u_html-3.0',
@@ -67,14 +67,14 @@ def configure(conf):
conf.fatal('wxwidgets version 3.0.0 is required; %s found' % wx_version)
def build(bld):
- if bld.env.STATIC:
+ if bld.env.BUILD_STATIC:
obj = bld(features = 'cxx cxxstlib')
else:
obj = bld(features = 'cxx cxxshlib')
obj.name = 'libdcpomatic-wx'
obj.export_includes = ['..']
- obj.uselib = 'WXWIDGETS'
+ obj.uselib = 'WXWIDGETS DCP'
if bld.env.TARGET_LINUX:
obj.uselib += ' GTK'
obj.use = 'libdcpomatic'