return ()
else:
return (('openjpeg-cdist', None),
+ ('libcxml', None),
('ffmpeg-cdist', '488d5d4496af5e3a3b9d31d6b221e8eeada6b77e'),
- ('libdcp', 'v0.49'))
+ ('libdcp', None))
def build(env, target):
cmd = './waf configure --prefix=%s' % env.work_dir_cscript()
if target.platform == 'windows':
shutil.copyfile('build/windows/installer.%s.nsi' % target.bits, 'build/windows/installer2.%s.nsi' % target.bits)
env.command('sed -i "s~%%resources%%~%s/windows~g" build/windows/installer2.%s.nsi' % (os.getcwd(), target.bits))
- env.command('sed -i "s~%%deps%%~%s~g" build/windows/installer2.%s.nsi' % (env.windows_prefix(), target.bits))
+ env.command('sed -i "s~%%deps%%~%s~g" build/windows/installer2.%s.nsi' % (env.windows_prefix, target.bits))
env.command('sed -i "s~%%binaries%%~%s/build~g" build/windows/installer2.%s.nsi' % (os.getcwd(), target.bits))
env.command('sed -i "s~%%bits%%~32~g" build/windows/installer2.%s.nsi' % target.bits)
env.command('makensis build/windows/installer2.%s.nsi' % target.bits)
shutil.copyfile('builds/control-%s-%d' % (target.version, target.bits), 'debian/control')
env.command('./waf dist')
f = open('debian/files', 'w')
- print >>f,'dvdomatic_%s-1_%s.deb video extra' % (version, cpu)
+ print >>f,'dcpomatic_%s-1_%s.deb video extra' % (version, cpu)
shutil.rmtree('build/deb', ignore_errors=True)
os.makedirs('build/deb')
os.chdir('build/deb')
- shutil.move('../../dvdomatic-%s.tar.bz2' % version, 'dvdomatic_%s.orig.tar.bz2' % version)
- env.command('tar xjf dvdomatic_%s.orig.tar.bz2' % version)
- os.chdir('dvdomatic-%s' % version)
+ shutil.move('../../dcpomatic-%s.tar.bz2' % version, 'dcpomatic_%s.orig.tar.bz2' % version)
+ env.command('tar xjf dcpomatic_%s.orig.tar.bz2' % version)
+ os.chdir('dcpomatic-%s' % version)
env.command('dch -b -v %s-1 "New upstream release."' % version)
env.set('CDIST_LINKFLAGS', env.get('LINKFLAGS'))
env.set('CDIST_CXXFLAGS', env.get('CXXFLAGS'))
def make_pot(env):
env.command('./waf pot')
- return [os.path.abspath('build/src/lib/libdvdomatic.pot'),
- os.path.abspath('build/src/wx/libdvdomatic-wx.pot'),
- os.path.abspath('build/src/tools/dvdomatic.pot')]
+ return [os.path.abspath('build/src/lib/libdcpomatic.pot'),
+ os.path.abspath('build/src/wx/libdcpomatic-wx.pot'),
+ os.path.abspath('build/src/tools/dcpomatic.pot')]
def make_manual(env):
os.chdir('doc/manual')
+/* -*- c-basic-offset: 8; default-tab-width: 8; -*- */
+
/*
Copyright (C) 2012 Carl Hetherington <cth@carlh.net>
#include <boost/algorithm/string.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/date_time.hpp>
+#include <libxml++/libxml++.h>
+#include <libcxml/cxml.h>
#include "film.h"
#include "format.h"
#include "job.h"
#include "filter.h"
-#include "transcoder.h"
#include "util.h"
#include "job_manager.h"
#include "ab_transcode_job.h"
#include "transcode_job.h"
#include "scp_dcp_job.h"
#include "log.h"
-#include "options.h"
#include "exceptions.h"
#include "examine_content_job.h"
#include "scaler.h"
-#include "decoder_factory.h"
#include "config.h"
#include "version.h"
#include "ui_signaller.h"
-#include "video_decoder.h"
-#include "audio_decoder.h"
-#include "sndfile_decoder.h"
#include "analyse_audio_job.h"
+#include "playlist.h"
+#include "player.h"
+#include "ffmpeg_content.h"
+#include "imagemagick_content.h"
+#include "sndfile_content.h"
+#include "dcp_content_type.h"
#include "i18n.h"
using std::min;
using std::make_pair;
using std::endl;
+using std::cout;
+using std::list;
using boost::shared_ptr;
using boost::lexical_cast;
using boost::to_upper_copy;
*/
Film::Film (string d, bool must_exist)
- : _use_dci_name (true)
- , _trust_content_header (true)
+ : _playlist (new Playlist)
+ , _use_dci_name (true)
+ , _trust_content_headers (true)
, _dcp_content_type (Config::instance()->default_dcp_content_type ())
, _format (Config::instance()->default_format ())
, _scaler (Scaler::from_id ("bicubic"))
, _trim_start (0)
, _trim_end (0)
, _trim_type (CPL)
- , _dcp_ab (false)
- , _use_content_audio (true)
+ , _ab (false)
, _audio_gain (0)
, _audio_delay (0)
- , _still_duration (10)
, _with_subtitles (false)
, _subtitle_offset (0)
, _subtitle_scale (1)
, _colour_lut (0)
, _j2k_bandwidth (200000000)
, _dci_metadata (Config::instance()->default_dci_metadata ())
- , _dcp_frame_rate (0)
- , _source_frame_rate (0)
+ , _dcp_video_frame_rate (0)
, _dirty (false)
{
set_dci_date_today ();
+
+ _playlist->Changed.connect (bind (&Film::playlist_changed, this));
+ _playlist->ContentChanged.connect (bind (&Film::playlist_content_changed, this, _1, _2));
/* Make state.directory a complete path without ..s (where possible)
(Code swiped from Adam Bowen on stackoverflow)
}
}
- _sndfile_stream = SndfileStream::create ();
-
if (must_exist) {
read_metadata ();
} else {
: boost::enable_shared_from_this<Film> (o)
/* note: the copied film shares the original's log */
, _log (o._log)
+ , _playlist (new Playlist (o._playlist))
, _directory (o._directory)
, _name (o._name)
, _use_dci_name (o._use_dci_name)
- , _content (o._content)
- , _trust_content_header (o._trust_content_header)
+ , _trust_content_headers (o._trust_content_headers)
, _dcp_content_type (o._dcp_content_type)
, _format (o._format)
, _crop (o._crop)
, _trim_start (o._trim_start)
, _trim_end (o._trim_end)
, _trim_type (o._trim_type)
- , _dcp_ab (o._dcp_ab)
- , _content_audio_stream (o._content_audio_stream)
- , _external_audio (o._external_audio)
- , _use_content_audio (o._use_content_audio)
+ , _ab (o._ab)
, _audio_gain (o._audio_gain)
, _audio_delay (o._audio_delay)
- , _still_duration (o._still_duration)
- , _subtitle_stream (o._subtitle_stream)
, _with_subtitles (o._with_subtitles)
, _subtitle_offset (o._subtitle_offset)
, _subtitle_scale (o._subtitle_scale)
, _colour_lut (o._colour_lut)
, _j2k_bandwidth (o._j2k_bandwidth)
, _dci_metadata (o._dci_metadata)
+ , _dcp_video_frame_rate (o._dcp_video_frame_rate)
, _dci_date (o._dci_date)
- , _dcp_frame_rate (o._dcp_frame_rate)
- , _size (o._size)
- , _length (o._length)
- , _content_digest (o._content_digest)
- , _content_audio_streams (o._content_audio_streams)
- , _sndfile_stream (o._sndfile_stream)
- , _subtitle_streams (o._subtitle_streams)
- , _source_frame_rate (o._source_frame_rate)
, _dirty (o._dirty)
{
-
-}
-
-Film::~Film ()
-{
-
+ _playlist->ContentChanged.connect (bind (&Film::playlist_content_changed, this, _1, _2));
}
string
stringstream s;
s << format()->id()
- << "_" << content_digest()
+ << "_" << _playlist->video_digest()
<< "_" << crop().left << "_" << crop().right << "_" << crop().top << "_" << crop().bottom
- << "_" << _dcp_frame_rate
+ << "_" << _dcp_video_frame_rate
<< "_" << f.first << "_" << f.second
<< "_" << scaler()->id()
<< "_" << j2k_bandwidth()
<< "_" << boost::lexical_cast<int> (colour_lut());
- if (dcp_ab()) {
+ if (ab()) {
pair<string, string> fa = Filter::ffmpeg_strings (Config::instance()->reference_filters());
s << "ab_" << Config::instance()->reference_scaler()->id() << "_" << fa.first << "_" << fa.second;
}
{
boost::filesystem::path p;
p /= "analysis";
- p /= content_digest();
+ p /= _playlist->audio_digest();
return file (p.string ());
}
throw BadSettingError (_("name"), _("cannot contain slashes"));
}
- log()->log (String::compose ("DVD-o-matic %1 git %2 using %3", dvdomatic_version, dvdomatic_git_commit, dependency_version_summary()));
+ log()->log (String::compose ("DCP-o-matic %1 git %2 using %3", dcpomatic_version, dcpomatic_git_commit, dependency_version_summary()));
{
char buffer[128];
log()->log (String::compose ("Starting to make DCP on %1", buffer));
}
- log()->log (String::compose ("Content is %1; type %2", content_path(), (content_type() == STILL ? _("still") : _("video"))));
- if (length()) {
- log()->log (String::compose ("Content length %1", length().get()));
- }
- log()->log (String::compose ("Content digest %1", content_digest()));
- log()->log (String::compose ("Content at %1 fps, DCP at %2 fps", source_frame_rate(), dcp_frame_rate()));
+// log()->log (String::compose ("Content is %1; type %2", content_path(), (content_type() == STILL ? _("still") : _("video"))));
+// if (length()) {
+// log()->log (String::compose ("Content length %1", length().get()));
+// }
+// log()->log (String::compose ("Content digest %1", content_digest()));
+// log()->log (String::compose ("Content at %1 fps, DCP at %2 fps", source_frame_rate(), dcp_frame_rate()));
log()->log (String::compose ("%1 threads", Config::instance()->num_local_encoding_threads()));
log()->log (String::compose ("J2K bandwidth %1", j2k_bandwidth()));
-#ifdef DVDOMATIC_DEBUG
- log()->log ("DVD-o-matic built in debug mode.");
+#ifdef DCPOMATIC_DEBUG
+ log()->log ("DCP-o-matic built in debug mode.");
#else
- log()->log ("DVD-o-matic built in optimised mode.");
+ log()->log ("DCP-o-matic built in optimised mode.");
#endif
#ifdef LIBDCP_DEBUG
log()->log ("libdcp built in debug mode.");
throw MissingSettingError (_("format"));
}
- if (content().empty ()) {
- throw MissingSettingError (_("content"));
+ if (_playlist->content().empty ()) {
+ throw StringError (_("You must add some content to the DCP before creating it"));
}
if (dcp_content_type() == 0) {
throw MissingSettingError (_("name"));
}
- DecodeOptions od;
- od.decode_subtitles = with_subtitles ();
-
shared_ptr<Job> r;
- if (dcp_ab()) {
- r = JobManager::instance()->add (shared_ptr<Job> (new ABTranscodeJob (shared_from_this(), od)));
+ if (ab()) {
+ r = JobManager::instance()->add (shared_ptr<Job> (new ABTranscodeJob (shared_from_this())));
} else {
- r = JobManager::instance()->add (shared_ptr<Job> (new TranscodeJob (shared_from_this(), od)));
+ r = JobManager::instance()->add (shared_ptr<Job> (new TranscodeJob (shared_from_this())));
}
}
-/** Start a job to analyse the audio of our content file */
+/** Start a job to analyse the audio in our Playlist */
void
Film::analyse_audio ()
{
JobManager::instance()->add (_analyse_audio_job);
}
-/** Start a job to examine our content file */
+/** Start a job to examine a piece of content */
void
-Film::examine_content ()
+Film::examine_content (shared_ptr<Content> c)
{
- if (_examine_content_job) {
- return;
- }
-
- _examine_content_job.reset (new ExamineContentJob (shared_from_this()));
- _examine_content_job->Finished.connect (bind (&Film::examine_content_finished, this));
- JobManager::instance()->add (_examine_content_job);
+ shared_ptr<Job> j (new ExamineContentJob (shared_from_this(), c, trust_content_headers ()));
+ JobManager::instance()->add (j);
}
void
_analyse_audio_job.reset ();
}
-void
-Film::examine_content_finished ()
-{
- _examine_content_job.reset ();
-}
-
/** Start a job to send our DCP to the configured TMS */
void
Film::send_dcp_to_tms ()
boost::filesystem::create_directories (directory());
- string const m = file ("metadata");
- ofstream f (m.c_str ());
- if (!f.good ()) {
- throw CreateFileError (m);
- }
+ xmlpp::Document doc;
+ xmlpp::Element* root = doc.create_root_node ("Metadata");
- f << "version " << state_version << endl;
+ root->add_child("Version")->add_child_text (boost::lexical_cast<string> (state_version));
+ root->add_child("Name")->add_child_text (_name);
+ root->add_child("UseDCIName")->add_child_text (_use_dci_name ? "1" : "0");
+ root->add_child("TrustContentHeaders")->add_child_text (_trust_content_headers ? "1" : "0");
- /* User stuff */
- f << "name " << _name << endl;
- f << "use_dci_name " << _use_dci_name << endl;
- f << "content " << _content << endl;
- f << "trust_content_header " << (_trust_content_header ? "1" : "0") << endl;
if (_dcp_content_type) {
- f << "dcp_content_type " << _dcp_content_type->dci_name () << endl;
+ root->add_child("DCPContentType")->add_child_text (_dcp_content_type->dci_name ());
}
+
if (_format) {
- f << "format " << _format->as_metadata () << endl;
+ root->add_child("Format")->add_child_text (_format->id ());
}
- f << "left_crop " << _crop.left << endl;
- f << "right_crop " << _crop.right << endl;
- f << "top_crop " << _crop.top << endl;
- f << "bottom_crop " << _crop.bottom << endl;
- for (vector<Filter const *>::const_iterator i = _filters.begin(); i != _filters.end(); ++i) {
- f << "filter " << (*i)->id () << endl;
- }
- f << "scaler " << _scaler->id () << endl;
- f << "trim_start " << _trim_start << endl;
- f << "trim_end " << _trim_end << endl;
+
switch (_trim_type) {
case CPL:
- f << "trim_type cpl\n";
+ root->add_child("TrimType")->add_child_text ("CPL");
break;
case ENCODE:
- f << "trim_type encode\n";
- break;
- }
- f << "dcp_ab " << (_dcp_ab ? "1" : "0") << endl;
- if (_content_audio_stream) {
- f << "selected_content_audio_stream " << _content_audio_stream->to_string() << endl;
+ root->add_child("TrimType")->add_child_text ("Encode");
}
- for (vector<string>::const_iterator i = _external_audio.begin(); i != _external_audio.end(); ++i) {
- f << "external_audio " << *i << endl;
- }
- f << "use_content_audio " << (_use_content_audio ? "1" : "0") << endl;
- f << "audio_gain " << _audio_gain << endl;
- f << "audio_delay " << _audio_delay << endl;
- f << "still_duration " << _still_duration << endl;
- if (_subtitle_stream) {
- f << "selected_subtitle_stream " << _subtitle_stream->to_string() << endl;
- }
- f << "with_subtitles " << _with_subtitles << endl;
- f << "subtitle_offset " << _subtitle_offset << endl;
- f << "subtitle_scale " << _subtitle_scale << endl;
- f << "colour_lut " << _colour_lut << endl;
- f << "j2k_bandwidth " << _j2k_bandwidth << endl;
- _dci_metadata.write (f);
- f << "dci_date " << boost::gregorian::to_iso_string (_dci_date) << endl;
- f << "dcp_frame_rate " << _dcp_frame_rate << endl;
- f << "width " << _size.width << endl;
- f << "height " << _size.height << endl;
- f << "length " << _length.get_value_or(0) << endl;
- f << "content_digest " << _content_digest << endl;
-
- for (vector<shared_ptr<AudioStream> >::const_iterator i = _content_audio_streams.begin(); i != _content_audio_streams.end(); ++i) {
- f << "content_audio_stream " << (*i)->to_string () << endl;
- }
-
- f << "external_audio_stream " << _sndfile_stream->to_string() << endl;
+
+ root->add_child("LeftCrop")->add_child_text (boost::lexical_cast<string> (_crop.left));
+ root->add_child("RightCrop")->add_child_text (boost::lexical_cast<string> (_crop.right));
+ root->add_child("TopCrop")->add_child_text (boost::lexical_cast<string> (_crop.top));
+ root->add_child("BottomCrop")->add_child_text (boost::lexical_cast<string> (_crop.bottom));
- for (vector<shared_ptr<SubtitleStream> >::const_iterator i = _subtitle_streams.begin(); i != _subtitle_streams.end(); ++i) {
- f << "subtitle_stream " << (*i)->to_string () << endl;
+ for (vector<Filter const *>::const_iterator i = _filters.begin(); i != _filters.end(); ++i) {
+ root->add_child("Filter")->add_child_text ((*i)->id ());
}
-
- f << "source_frame_rate " << _source_frame_rate << endl;
+
+ root->add_child("Scaler")->add_child_text (_scaler->id ());
+ root->add_child("TrimStart")->add_child_text (boost::lexical_cast<string> (_trim_start));
+ root->add_child("TrimEnd")->add_child_text (boost::lexical_cast<string> (_trim_end));
+ root->add_child("AB")->add_child_text (_ab ? "1" : "0");
+ root->add_child("AudioGain")->add_child_text (boost::lexical_cast<string> (_audio_gain));
+ root->add_child("AudioDelay")->add_child_text (boost::lexical_cast<string> (_audio_delay));
+ root->add_child("WithSubtitles")->add_child_text (_with_subtitles ? "1" : "0");
+ root->add_child("SubtitleOffset")->add_child_text (boost::lexical_cast<string> (_subtitle_offset));
+ root->add_child("SubtitleScale")->add_child_text (boost::lexical_cast<string> (_subtitle_scale));
+ root->add_child("ColourLUT")->add_child_text (boost::lexical_cast<string> (_colour_lut));
+ root->add_child("J2KBandwidth")->add_child_text (boost::lexical_cast<string> (_j2k_bandwidth));
+ _dci_metadata.as_xml (root->add_child ("DCIMetadata"));
+ root->add_child("DCPVideoFrameRate")->add_child_text (boost::lexical_cast<string> (_dcp_video_frame_rate));
+ root->add_child("DCIDate")->add_child_text (boost::gregorian::to_iso_string (_dci_date));
+ _playlist->as_xml (root->add_child ("Playlist"));
+
+ doc.write_to_file_formatted (file ("metadata.xml"));
_dirty = false;
}
boost::mutex::scoped_lock lm (_state_mutex);
LocaleGuard lg;
- _external_audio.clear ();
- _content_audio_streams.clear ();
- _subtitle_streams.clear ();
-
- boost::optional<int> version;
-
- /* Backward compatibility things */
- boost::optional<int> audio_sample_rate;
- boost::optional<int> audio_stream_index;
- boost::optional<int> subtitle_stream_index;
-
- ifstream f (file ("metadata").c_str());
- if (!f.good()) {
- throw OpenFileError (file ("metadata"));
+ if (boost::filesystem::exists (file ("metadata")) && !boost::filesystem::exists (file ("metadata.xml"))) {
+ throw StringError (_("This film was created with an older version of DCP-o-matic, and 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!"));
}
-
- multimap<string, string> kv = read_key_value (f);
- /* We need version before anything else */
- multimap<string, string>::iterator v = kv.find ("version");
- if (v != kv.end ()) {
- version = atoi (v->second.c_str());
- }
+ cxml::File f (file ("metadata.xml"), "Metadata");
- for (multimap<string, string>::const_iterator i = kv.begin(); i != kv.end(); ++i) {
- string const k = i->first;
- string const v = i->second;
+ _name = f.string_child ("Name");
+ _use_dci_name = f.bool_child ("UseDCIName");
+ _trust_content_headers = f.bool_child ("TrustContentHeaders");
- if (k == "audio_sample_rate") {
- audio_sample_rate = atoi (v.c_str());
- }
-
- /* User-specified stuff */
- if (k == "name") {
- _name = v;
- } else if (k == "use_dci_name") {
- _use_dci_name = (v == "1");
- } else if (k == "content") {
- _content = v;
- } else if (k == "trust_content_header") {
- _trust_content_header = (v == "1");
- } else if (k == "dcp_content_type") {
- if (version < 3) {
- _dcp_content_type = DCPContentType::from_pretty_name (v);
- } else {
- _dcp_content_type = DCPContentType::from_dci_name (v);
- }
- } else if (k == "format") {
- _format = Format::from_metadata (v);
- } else if (k == "left_crop") {
- _crop.left = atoi (v.c_str ());
- } else if (k == "right_crop") {
- _crop.right = atoi (v.c_str ());
- } else if (k == "top_crop") {
- _crop.top = atoi (v.c_str ());
- } else if (k == "bottom_crop") {
- _crop.bottom = atoi (v.c_str ());
- } else if (k == "filter") {
- _filters.push_back (Filter::from_id (v));
- } else if (k == "scaler") {
- _scaler = Scaler::from_id (v);
- } else if ( ((!version || version < 2) && k == "dcp_trim_start") || k == "trim_start") {
- _trim_start = atoi (v.c_str ());
- } else if ( ((!version || version < 2) && k == "dcp_trim_end") || k == "trim_end") {
- _trim_end = atoi (v.c_str ());
- } else if (k == "trim_type") {
- if (v == "cpl") {
- _trim_type = CPL;
- } else if (v == "encode") {
- _trim_type = ENCODE;
- }
- } else if (k == "dcp_ab") {
- _dcp_ab = (v == "1");
- } else if (k == "selected_content_audio_stream" || (!version && k == "selected_audio_stream")) {
- if (!version) {
- audio_stream_index = atoi (v.c_str ());
- } else {
- _content_audio_stream = audio_stream_factory (v, version);
- }
- } else if (k == "external_audio") {
- _external_audio.push_back (v);
- } else if (k == "use_content_audio") {
- _use_content_audio = (v == "1");
- } else if (k == "audio_gain") {
- _audio_gain = atof (v.c_str ());
- } else if (k == "audio_delay") {
- _audio_delay = atoi (v.c_str ());
- } else if (k == "still_duration") {
- _still_duration = atoi (v.c_str ());
- } else if (k == "selected_subtitle_stream") {
- if (!version) {
- subtitle_stream_index = atoi (v.c_str ());
- } else {
- _subtitle_stream = subtitle_stream_factory (v, version);
- }
- } else if (k == "with_subtitles") {
- _with_subtitles = (v == "1");
- } else if (k == "subtitle_offset") {
- _subtitle_offset = atoi (v.c_str ());
- } else if (k == "subtitle_scale") {
- _subtitle_scale = atof (v.c_str ());
- } else if (k == "colour_lut") {
- _colour_lut = atoi (v.c_str ());
- } else if (k == "j2k_bandwidth") {
- _j2k_bandwidth = atoi (v.c_str ());
- } else if (k == "dci_date") {
- _dci_date = boost::gregorian::from_undelimited_string (v);
- } else if (k == "dcp_frame_rate") {
- _dcp_frame_rate = atoi (v.c_str ());
+ {
+ optional<string> c = f.optional_string_child ("DCPContentType");
+ if (c) {
+ _dcp_content_type = DCPContentType::from_dci_name (c.get ());
}
+ }
- _dci_metadata.read (k, v);
-
- /* Cached stuff */
- if (k == "width") {
- _size.width = atoi (v.c_str ());
- } else if (k == "height") {
- _size.height = atoi (v.c_str ());
- } else if (k == "length") {
- int const vv = atoi (v.c_str ());
- if (vv) {
- _length = vv;
- }
- } else if (k == "content_digest") {
- _content_digest = v;
- } else if (k == "content_audio_stream" || (!version && k == "audio_stream")) {
- _content_audio_streams.push_back (audio_stream_factory (v, version));
- } else if (k == "external_audio_stream") {
- _sndfile_stream = audio_stream_factory (v, version);
- } else if (k == "subtitle_stream") {
- _subtitle_streams.push_back (subtitle_stream_factory (v, version));
- } else if (k == "source_frame_rate") {
- _source_frame_rate = atof (v.c_str ());
- } else if (version < 4 && k == "frames_per_second") {
- _source_frame_rate = atof (v.c_str ());
- /* Fill in what would have been used for DCP frame rate by the older version */
- _dcp_frame_rate = best_dcp_frame_rate (_source_frame_rate);
+ {
+ optional<string> c = f.optional_string_child ("Format");
+ if (c) {
+ _format = Format::from_id (c.get ());
}
}
- if (!version) {
- if (audio_sample_rate) {
- /* version < 1 didn't specify sample rate in the audio streams, so fill it in here */
- for (vector<shared_ptr<AudioStream> >::iterator i = _content_audio_streams.begin(); i != _content_audio_streams.end(); ++i) {
- (*i)->set_sample_rate (audio_sample_rate.get());
- }
+ {
+ optional<string> c = f.optional_string_child ("TrimType");
+ if (!c || c.get() == "CPL") {
+ _trim_type = CPL;
+ } else if (c && c.get() == "Encode") {
+ _trim_type = ENCODE;
}
+ }
- /* also the selected stream was specified as an index */
- if (audio_stream_index && audio_stream_index.get() >= 0 && audio_stream_index.get() < (int) _content_audio_streams.size()) {
- _content_audio_stream = _content_audio_streams[audio_stream_index.get()];
- }
+ _crop.left = f.number_child<int> ("LeftCrop");
+ _crop.right = f.number_child<int> ("RightCrop");
+ _crop.top = f.number_child<int> ("TopCrop");
+ _crop.bottom = f.number_child<int> ("BottomCrop");
- /* similarly the subtitle */
- if (subtitle_stream_index && subtitle_stream_index.get() >= 0 && subtitle_stream_index.get() < (int) _subtitle_streams.size()) {
- _subtitle_stream = _subtitle_streams[subtitle_stream_index.get()];
+ {
+ list<shared_ptr<cxml::Node> > c = f.node_children ("Filter");
+ for (list<shared_ptr<cxml::Node> >::iterator i = c.begin(); i != c.end(); ++i) {
+ _filters.push_back (Filter::from_id ((*i)->content ()));
}
}
-
+
+ _scaler = Scaler::from_id (f.string_child ("Scaler"));
+ _trim_start = f.number_child<int> ("TrimStart");
+ _trim_end = f.number_child<int> ("TrimEnd");
+ _ab = f.bool_child ("AB");
+ _audio_gain = f.number_child<float> ("AudioGain");
+ _audio_delay = f.number_child<int> ("AudioDelay");
+ _with_subtitles = f.bool_child ("WithSubtitles");
+ _subtitle_offset = f.number_child<float> ("SubtitleOffset");
+ _subtitle_scale = f.number_child<float> ("SubtitleScale");
+ _colour_lut = f.number_child<int> ("ColourLUT");
+ _j2k_bandwidth = f.number_child<int> ("J2KBandwidth");
+ _dci_metadata = DCIMetadata (f.node_child ("DCIMetadata"));
+ _dcp_video_frame_rate = f.number_child<int> ("DCPVideoFrameRate");
+ _dci_date = boost::gregorian::from_undelimited_string (f.string_child ("DCIDate"));
+
+ _playlist->set_from_xml (f.node_child ("Playlist"));
+
_dirty = false;
}
return p.string ();
}
-/** @return full path of the content (actual video) file
- * of the Film.
- */
-string
-Film::content_path () const
-{
- boost::mutex::scoped_lock lm (_state_mutex);
- if (boost::filesystem::path(_content).has_root_directory ()) {
- return _content;
- }
-
- return file (_content);
-}
-
-ContentType
-Film::content_type () const
-{
- if (boost::filesystem::is_directory (_content)) {
- /* Directory of images, we assume */
- return VIDEO;
- }
-
- if (still_image_file (_content)) {
- return STILL;
- }
-
- return VIDEO;
-}
-
-/** @return The sampling rate that we will resample the audio to */
-int
-Film::target_audio_sample_rate () const
-{
- if (!audio_stream()) {
- return 0;
- }
-
- /* Resample to a DCI-approved sample rate */
- double t = dcp_audio_sample_rate (audio_stream()->sample_rate());
-
- FrameRateConversion frc (source_frame_rate(), dcp_frame_rate());
-
- /* Compensate if the DCP is being run at a different frame rate
- to the source; that is, if the video is run such that it will
- look different in the DCP compared to the source (slower or faster).
- skip/repeat doesn't come into effect here.
- */
-
- if (frc.change_speed) {
- t *= source_frame_rate() * frc.factor() / dcp_frame_rate();
- }
-
- return rint (t);
-}
-
-int
-Film::still_duration_in_frames () const
-{
- return still_duration() * source_frame_rate();
-}
-
/** @return a DCI-compliant name for a DCP of this film */
string
Film::dci_name (bool if_created_now) const
}
}
- switch (audio_channels()) {
- case 1:
- d << "_10";
- break;
- case 2:
- d << "_20";
- break;
- case 6:
- d << "_51";
- break;
- case 8:
- d << "_71";
- break;
- }
-
- d << "_2K";
+ d << "_51_2K";
if (!dm.studio.empty ()) {
d << "_" << dm.studio;
}
void
-Film::set_content (string c)
-{
- string check = directory ();
-
- boost::filesystem::path slash ("/");
- string platform_slash = slash.make_preferred().string ();
-
- if (!ends_with (check, platform_slash)) {
- check += platform_slash;
- }
-
- if (boost::filesystem::path(c).has_root_directory () && starts_with (c, check)) {
- c = c.substr (_directory.length() + 1);
- }
-
- string old_content;
-
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- if (c == _content) {
- return;
- }
-
- old_content = _content;
- _content = c;
- }
-
- /* Reset streams here in case the new content doesn't have one or the other */
- _content_audio_stream = shared_ptr<AudioStream> ();
- _subtitle_stream = shared_ptr<SubtitleStream> ();
-
- /* Start off using content audio */
- set_use_content_audio (true);
-
- /* Create a temporary decoder so that we can get information
- about the content.
- */
-
- try {
- Decoders d = decoder_factory (shared_from_this(), DecodeOptions());
-
- set_size (d.video->native_size ());
- set_source_frame_rate (d.video->frames_per_second ());
- set_dcp_frame_rate (best_dcp_frame_rate (source_frame_rate ()));
- set_subtitle_streams (d.video->subtitle_streams ());
- if (d.audio) {
- set_content_audio_streams (d.audio->audio_streams ());
- }
-
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _content = c;
- }
-
- signal_changed (CONTENT);
-
- /* Start off with the first audio and subtitle streams */
- if (d.audio && !d.audio->audio_streams().empty()) {
- set_content_audio_stream (d.audio->audio_streams().front());
- }
-
- if (!d.video->subtitle_streams().empty()) {
- set_subtitle_stream (d.video->subtitle_streams().front());
- }
-
- examine_content ();
-
- } catch (...) {
-
- boost::mutex::scoped_lock lm (_state_mutex);
- _content = old_content;
- throw;
-
- }
-
- /* Default format */
- set_format (Config::instance()->default_format ());
-
- /* Still image DCPs must use external audio */
- if (content_type() == STILL) {
- set_use_content_audio (false);
- }
-}
-
-void
-Film::set_trust_content_header (bool t)
+Film::set_trust_content_headers (bool t)
{
{
boost::mutex::scoped_lock lm (_state_mutex);
- _trust_content_header = t;
+ _trust_content_headers = t;
}
- signal_changed (TRUST_CONTENT_HEADER);
-
- if (!_trust_content_header && !content().empty()) {
+ signal_changed (TRUST_CONTENT_HEADERS);
-
+
+ Playlist::ContentList content = _playlist->content ();
+ if (!_trust_content_headers && !content.empty()) {
/* We just said that we don't trust the content's header */
- examine_content ();
+ for (Playlist::ContentList::iterator i = content.begin(); i != content.end(); ++i) {
+ examine_content (*i);
+ }
}
}
}
void
-Film::set_dcp_ab (bool a)
+Film::set_ab (bool a)
{
{
boost::mutex::scoped_lock lm (_state_mutex);
- _dcp_ab = a;
+ _ab = a;
}
- signal_changed (DCP_AB);
-}
-
-void
-Film::set_content_audio_stream (shared_ptr<AudioStream> s)
-{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _content_audio_stream = s;
- }
- signal_changed (CONTENT_AUDIO_STREAM);
-}
-
-void
-Film::set_external_audio (vector<string> a)
-{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _external_audio = a;
- }
-
- shared_ptr<SndfileDecoder> decoder (new SndfileDecoder (shared_from_this(), DecodeOptions()));
- if (decoder->audio_stream()) {
- _sndfile_stream = decoder->audio_stream ();
- }
-
- signal_changed (EXTERNAL_AUDIO);
-}
-
-void
-Film::set_use_content_audio (bool e)
-{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _use_content_audio = e;
- }
-
- signal_changed (USE_CONTENT_AUDIO);
+ signal_changed (AB);
}
void
signal_changed (AUDIO_DELAY);
}
-void
-Film::set_still_duration (int d)
-{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _still_duration = d;
- }
- signal_changed (STILL_DURATION);
-}
-
-void
-Film::set_subtitle_stream (shared_ptr<SubtitleStream> s)
-{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _subtitle_stream = s;
- }
- signal_changed (SUBTITLE_STREAM);
-}
-
void
Film::set_with_subtitles (bool w)
{
void
-Film::set_dcp_frame_rate (int f)
-{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _dcp_frame_rate = f;
- }
- signal_changed (DCP_FRAME_RATE);
-}
-
-void
-Film::set_size (libdcp::Size s)
-{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _size = s;
- }
- signal_changed (SIZE);
-}
-
-void
-Film::set_length (SourceFrame l)
-{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _length = l;
- }
- signal_changed (LENGTH);
-}
-
-void
-Film::unset_length ()
-{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _length = boost::none;
- }
- signal_changed (LENGTH);
-}
-
-void
-Film::set_content_digest (string d)
-{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _content_digest = d;
- }
- _dirty = true;
-}
-
-void
-Film::set_content_audio_streams (vector<shared_ptr<AudioStream> > s)
+Film::set_dcp_video_frame_rate (int f)
{
{
boost::mutex::scoped_lock lm (_state_mutex);
- _content_audio_streams = s;
+ _dcp_video_frame_rate = f;
}
- signal_changed (CONTENT_AUDIO_STREAMS);
+ signal_changed (DCP_VIDEO_FRAME_RATE);
}
-void
-Film::set_subtitle_streams (vector<shared_ptr<SubtitleStream> > s)
-{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _subtitle_streams = s;
- }
- signal_changed (SUBTITLE_STREAMS);
-}
-
-void
-Film::set_source_frame_rate (float f)
-{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _source_frame_rate = f;
- }
- signal_changed (SOURCE_FRAME_RATE);
-}
-
void
Film::signal_changed (Property p)
{
_dirty = true;
}
- if (ui_signaller) {
- ui_signaller->emit (boost::bind (boost::ref (Changed), p));
+ switch (p) {
+ case Film::CONTENT:
+ set_dcp_video_frame_rate (_playlist->best_dcp_frame_rate ());
+ break;
+ default:
+ break;
}
-}
-int
-Film::audio_channels () const
-{
- shared_ptr<AudioStream> s = audio_stream ();
- if (!s) {
- return 0;
+ if (ui_signaller) {
+ ui_signaller->emit (boost::bind (boost::ref (Changed), p));
}
-
- return s->channels ();
}
void
_dci_date = boost::gregorian::day_clock::local_day ();
}
-boost::shared_ptr<AudioStream>
-Film::audio_stream () const
-{
- if (use_content_audio()) {
- return _content_audio_stream;
- }
-
- return _sndfile_stream;
-}
-
string
Film::info_path (int f) const
{
return true;
}
+shared_ptr<Player>
+Film::player () const
+{
+ boost::mutex::scoped_lock lm (_state_mutex);
+ return shared_ptr<Player> (new Player (shared_from_this (), _playlist));
+}
+
+shared_ptr<Playlist>
+Film::playlist () const
+{
+ boost::mutex::scoped_lock lm (_state_mutex);
+ return _playlist;
+}
+
+Playlist::ContentList
+Film::content () const
+{
+ return _playlist->content ();
+}
+
+void
+Film::add_content (shared_ptr<Content> c)
+{
+ _playlist->add (c);
+ examine_content (c);
+}
+
+void
+Film::remove_content (shared_ptr<Content> c)
+{
+ _playlist->remove (c);
+}
+
+Time
+Film::length () const
+{
+ return _playlist->length (shared_from_this ());
+}
+
bool
-Film::has_audio () const
+Film::has_subtitles () const
{
- if (use_content_audio()) {
- return audio_stream();
- }
+ return _playlist->has_subtitles ();
+}
- vector<string> const e = external_audio ();
- for (vector<string>::const_iterator i = e.begin(); i != e.end(); ++i) {
- if (!i->empty ()) {
- return true;
- }
+OutputVideoFrame
+Film::best_dcp_video_frame_rate () const
+{
+ return _playlist->best_dcp_frame_rate ();
+}
+
+void
+Film::playlist_content_changed (boost::weak_ptr<Content> c, int p)
+{
+ if (p == VideoContentProperty::VIDEO_FRAME_RATE) {
+ set_dcp_video_frame_rate (_playlist->best_dcp_frame_rate ());
+ }
+
+ if (ui_signaller) {
+ ui_signaller->emit (boost::bind (boost::ref (ContentChanged), c, p));
}
+}
+
+void
+Film::playlist_changed ()
+{
+ signal_changed (CONTENT);
+}
+
+int
+Film::loop () const
+{
+ return _playlist->loop ();
+}
+
+void
+Film::set_loop (int c)
+{
+ _playlist->set_loop (c);
+}
- return false;
+OutputAudioFrame
+Film::time_to_audio_frames (Time t) const
+{
+ return t * dcp_audio_frame_rate () / TIME_HZ;
}
+OutputVideoFrame
+Film::time_to_video_frames (Time t) const
+{
+ return t * dcp_video_frame_rate () / TIME_HZ;
+}
+
+Time
+Film::audio_frames_to_time (OutputAudioFrame f) const
+{
+ return f * TIME_HZ / dcp_audio_frame_rate ();
+}
+
+Time
+Film::video_frames_to_time (OutputVideoFrame f) const
+{
+ return f * TIME_HZ / dcp_video_frame_rate ();
+}
+
+OutputAudioFrame
+Film::dcp_audio_frame_rate () const
+{
+ /* XXX */
+ return 48000;
+}
#include <iostream>
#include "format.h"
#include "film.h"
+#include "playlist.h"
#include "i18n.h"
return s.str ();
}
-/** @return Identifier for this format as metadata for a Film's metadata file */
-string
-Format::as_metadata () const
-{
- return _id;
-}
-
/** Fill our _formats vector with all available formats */
void
Format::setup_formats ()
{
/// TRANSLATORS: these are film picture aspect ratios; "Academy" means 1.37, "Flat" 1.85 and "Scope" 2.39.
_formats.push_back (
- new FixedFormat (1.19, libdcp::Size (1285, 1080), N_("119"), _("1.19"), N_("F")
+ new FixedFormat (1.19, libdcp::Size (1285, 1080), "119", _("1.19"), "F"
));
_formats.push_back (
- new FixedFormat (4.0 / 3.0, libdcp::Size (1436, 1080), N_("133"), _("4:3"), N_("F")
+ new FixedFormat (4.0 / 3.0, libdcp::Size (1436, 1080), "133", _("4:3"), "F"
));
_formats.push_back (
- new FixedFormat (1.38, libdcp::Size (1485, 1080), N_("138"), _("1.375"), N_("F")
+ new FixedFormat (1.38, libdcp::Size (1485, 1080), "138", _("1.375"), "F"
));
_formats.push_back (
- new FixedFormat (4.0 / 3.0, libdcp::Size (1998, 1080), N_("133-in-flat"), _("4:3 within Flat"), N_("F")
+ new FixedFormat (4.0 / 3.0, libdcp::Size (1998, 1080), "133-in-flat", _("4:3 within Flat"), "F"
));
_formats.push_back (
- new FixedFormat (1.37, libdcp::Size (1480, 1080), N_("137"), _("Academy"), N_("F")
+ new FixedFormat (1.37, libdcp::Size (1480, 1080), "137", _("Academy"), "F"
));
_formats.push_back (
- new FixedFormat (1.66, libdcp::Size (1793, 1080), N_("166"), _("1.66"), N_("F")
+ new FixedFormat (1.66, libdcp::Size (1793, 1080), "166", _("1.66"), "F"
));
_formats.push_back (
- new FixedFormat (1.66, libdcp::Size (1998, 1080), N_("166-in-flat"), _("1.66 within Flat"), N_("F")
+ new FixedFormat (1.66, libdcp::Size (1998, 1080), "166-in-flat", _("1.66 within Flat"), "F"
));
_formats.push_back (
- new FixedFormat (1.78, libdcp::Size (1998, 1080), N_("178-in-flat"), _("16:9 within Flat"), N_("F")
+ new FixedFormat (1.78, libdcp::Size (1998, 1080), "178-in-flat", _("16:9 within Flat"), "F"
));
_formats.push_back (
- new FixedFormat (1.78, libdcp::Size (1920, 1080), N_("178"), _("16:9"), N_("F")
+ new FixedFormat (1.78, libdcp::Size (1920, 1080), "178", _("16:9"), "F"
));
_formats.push_back (
- new FixedFormat (1.85, libdcp::Size (1998, 1080), N_("185"), _("Flat"), N_("F")
+ new FixedFormat (1.85, libdcp::Size (1998, 1080), "185", _("Flat"), "F"
));
_formats.push_back (
- new FixedFormat (1.78, libdcp::Size (2048, 858), N_("178-in-scope"), _("16:9 within Scope"), N_("S")
+ new FixedFormat (1.78, libdcp::Size (2048, 858), "178-in-scope", _("16:9 within Scope"), "S"
));
_formats.push_back (
- new FixedFormat (2.39, libdcp::Size (2048, 858), N_("239"), _("Scope"), N_("S")
+ new FixedFormat (2.39, libdcp::Size (2048, 858), "239", _("Scope"), "S"
+ ));
+
+ _formats.push_back (
+ new FixedFormat (1.896, libdcp::Size (2048, 1080), "full-frame", _("Full frame"), "C"
));
_formats.push_back (
- new VariableFormat (libdcp::Size (1998, 1080), N_("var-185"), _("Flat without stretch"), N_("F")
+ new VariableFormat (libdcp::Size (1998, 1080), "var-185", _("Flat without stretch"), "F"
));
_formats.push_back (
- new VariableFormat (libdcp::Size (2048, 858), N_("var-239"), _("Scope without stretch"), N_("S")
+ new VariableFormat (libdcp::Size (2048, 858), "var-239", _("Scope without stretch"), "S"
));
}
return *j;
}
-
-/** @param m Metadata, as returned from as_metadata().
- * @return Matching Format, or 0.
- */
-Format const *
-Format::from_metadata (string m)
-{
- return from_id (m);
-}
-
/** @return All available formats */
vector<Format const *>
Format::all ()
float
VariableFormat::ratio (shared_ptr<const Film> f) const
{
- libdcp::Size const c = f->cropped_size (f->size ());
+ /* XXX */
+ libdcp::Size const c;// = f->cropped_size (f->video_size ());
return float (c.width) / c.height;
}
#
msgid ""
msgstr ""
-"Project-Id-Version: LIBDVDOMATIC\n"
+"Project-Id-Version: LIBDCPOMATIC\n"
"Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2013-04-22 15:06+0100\n"
+ "POT-Creation-Date: 2013-05-09 09:51+0100\n"
"PO-Revision-Date: 2013-04-02 19:10-0500\n"
"Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n"
"Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n"
msgid "Advertisement"
msgstr "Publicidad"
- #: src/lib/job.cc:72
+ #: src/lib/job.cc:73
msgid "An error occurred whilst handling the file %1."
msgstr "Ha ocurrido un error con el fichero %1."
msgid "Bilinear"
msgstr "Bilineal"
- #: src/lib/job.cc:306
+ #: src/lib/job.cc:318
msgid "Cancelled"
msgstr ""
msgstr ""
"No se puede redimensionar el sonido porque no se encuentra libswresample"
- #: src/lib/util.cc:932
+ #: src/lib/util.cc:960
msgid "Centre"
msgstr ""
msgid "Cubic interpolating deinterlacer"
msgstr "Desentrelazado por interpolación cúbica"
- #: src/lib/util.cc:1007
+ #: src/lib/util.cc:1035
msgid "DCP and source have the same rate.\n"
msgstr "La fuente y el DCP tienen la misma velocidad.\n"
- #: src/lib/util.cc:1017
+ #: src/lib/util.cc:1045
#, fuzzy
msgid "DCP will run at %1%% of the source speed.\n"
msgstr "El DCP se reproducirá al %1%% de la velocidad de la fuente.\n"
- #: src/lib/util.cc:1010
+ #: src/lib/util.cc:1038
msgid "DCP will use every other frame of the source.\n"
msgstr "El DCP usará fotogramas alternos de la fuente.\n"
msgid "Dolby CP750"
msgstr "Dolby CP750"
- #: src/lib/util.cc:1012
+ #: src/lib/util.cc:1040
msgid "Each source frame will be doubled in the DCP.\n"
msgstr "Se doblará cada fotograma de la fuente en el DCP.\n"
- #: src/lib/job.cc:304
+ #: src/lib/job.cc:316
msgid "Error (%1)"
msgstr "Error (%1)"
msgid "Horizontal deblocking filter A"
msgstr "Horizontal deblocking filter A"
- #: src/lib/job.cc:96 src/lib/job.cc:105
+ #: src/lib/job.cc:97 src/lib/job.cc:106
msgid ""
"It is not known what caused this error. The best idea is to report the "
-"problem to the DVD-o-matic mailing list (dvdomatic@carlh.net)"
+"problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)"
msgstr ""
"Error desconocido. La mejor idea es informar del problema a la lista de "
-"correo de DVD-O-matic (dvdomatic@carlh.net)"
+"correo de DCP-o-matic (dcpomatic@carlh.net)"
#: src/lib/filter.cc:82
msgid "Kernel deinterlacer"
msgid "Lanczos"
msgstr "Lanczos"
- #: src/lib/util.cc:930
+ #: src/lib/util.cc:958
msgid "Left"
msgstr ""
- #: src/lib/util.cc:934
+ #: src/lib/util.cc:962
msgid "Left surround"
msgstr ""
- #: src/lib/util.cc:933
+ #: src/lib/util.cc:961
msgid "Lfe (sub)"
msgstr ""
msgid "Noise reduction"
msgstr "Reducción de ruido"
- #: src/lib/job.cc:302
+ #: src/lib/job.cc:314
msgid "OK (ran for %1)"
msgstr "OK (ejecución %1)"
msgid "Rating"
msgstr "Clasificación"
- #: src/lib/util.cc:500
+ #: src/lib/util.cc:513
msgid "Rec 709"
msgstr "Rec 709"
- #: src/lib/util.cc:931
+ #: src/lib/util.cc:959
msgid "Right"
msgstr ""
- #: src/lib/util.cc:935
+ #: src/lib/util.cc:963
msgid "Right surround"
msgstr ""
msgid "Test"
msgstr "Test"
- #: src/lib/job.cc:78
+ #: src/lib/job.cc:79
msgid ""
"The drive that the film is stored on is low in disc space. Free some more "
"space and try again."
msgid "Transitional"
msgstr "Transitional"
- #: src/lib/job.cc:104
+ #: src/lib/job.cc:105
msgid "Unknown error"
msgstr "Error desconocido"
msgid "cannot contain slashes"
msgstr "no puede contener barras"
- #: src/lib/util.cc:541
+ #: src/lib/util.cc:554
msgid "connect timed out"
msgstr "tiempo de conexión agotado"
msgid "could not find video decoder"
msgstr "no se pudo encontrar decodificador de vídeo"
- #: src/lib/sndfile_decoder.cc:72
+ #: src/lib/sndfile_decoder.cc:67
msgid "could not open external audio file for reading"
msgstr "no se pudo leer el fichero externo de audio"
msgid "could not write to file %1 (%2)"
msgstr "No se pudo escribir el fichero remoto (%1)"
- #: src/lib/sndfile_decoder.cc:94
+ #: src/lib/sndfile_decoder.cc:89
msgid "external audio files have differing lengths"
msgstr "los ficheros externos de sonido tienen duraciones diferentes"
- #: src/lib/sndfile_decoder.cc:76
+ #: src/lib/sndfile_decoder.cc:71
msgid "external audio files must be mono"
msgstr "los ficheros externos de sonido deben ser mono"
msgid "frames per second"
msgstr "fotogramas por segundo"
- #: src/lib/util.cc:115
+ #: src/lib/util.cc:128
msgid "hour"
msgstr "hora"
- #: src/lib/util.cc:112 src/lib/util.cc:117
+ #: src/lib/util.cc:125 src/lib/util.cc:130
msgid "hours"
msgstr "horas"
- #: src/lib/util.cc:122
+ #: src/lib/util.cc:135
msgid "minute"
msgstr "minuto"
- #: src/lib/util.cc:124
+ #: src/lib/util.cc:137
msgid "minutes"
msgstr "minutos"
- #: src/lib/util.cc:684
+ #: src/lib/util.cc:697
msgid "missing key %1 in key-value set"
msgstr "falta la clave %1 en el par clave-valor"
#. / TRANSLATORS: remaining here follows an amount of time that is remaining
#. / on an operation.
- #: src/lib/job.cc:299
+ #: src/lib/job.cc:311
msgid "remaining"
msgstr "pendiente"
- #: src/lib/util.cc:498
+ #: src/lib/util.cc:511
msgid "sRGB"
msgstr "sRGB"
- #: src/lib/util.cc:127
+ #: src/lib/util.cc:140
msgid "seconds"
msgstr "segundos"
#
msgid ""
msgstr ""
-"Project-Id-Version: DVD-o-matic FRENCH\n"
+"Project-Id-Version: DCP-o-matic FRENCH\n"
"Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2013-04-22 15:06+0100\n"
- "PO-Revision-Date: 2013-03-20 00:39+0100\n"
- "Last-Translator: FreeDCP.net <freedcp.net@gmail.com>\n"
+ "POT-Creation-Date: 2013-05-09 09:51+0100\n"
+ "PO-Revision-Date: 2013-05-10 14:33+0100\n"
+ "Last-Translator: \n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
#: src/lib/format.cc:79
msgid "4:3"
- msgstr ""
+ msgstr "4:3"
#: src/lib/format.cc:87
msgid "4:3 within Flat"
msgid "Advertisement"
msgstr "Advertisement"
- #: src/lib/job.cc:72
+ #: src/lib/job.cc:73
msgid "An error occurred whilst handling the file %1."
msgstr "Une erreur s'est produite lors du traitement du fichier %1."
msgid "Bilinear"
msgstr "Bilinéaire"
- #: src/lib/job.cc:306
+ #: src/lib/job.cc:318
msgid "Cancelled"
- msgstr ""
+ msgstr "Annulé"
#: src/lib/exceptions.cc:60
msgid "Cannot handle pixel format %1 during %2"
- msgstr ""
+ msgstr "Format du pixel %1 non géré par %2"
#: src/lib/encoder.cc:101
msgid "Cannot resample audio as libswresample is not present"
msgstr "Ré-échantillonnage du son impossible : libswresample est absent"
- #: src/lib/util.cc:932
+ #: src/lib/util.cc:960
msgid "Centre"
- msgstr ""
+ msgstr "Centre"
#: src/lib/scp_dcp_job.cc:109
msgid "Copy DCP to TMS"
msgid "Cubic interpolating deinterlacer"
msgstr "Désentrelacement cubique interpolé"
- #: src/lib/util.cc:1007
+ #: src/lib/util.cc:1035
msgid "DCP and source have the same rate.\n"
msgstr "Le DCP et la source ont les mêmes cadences.\n"
- #: src/lib/util.cc:1017
+ #: src/lib/util.cc:1045
#, fuzzy
msgid "DCP will run at %1%% of the source speed.\n"
msgstr "La cadence du DCP sera %1%% par rapport à la source.\n"
- #: src/lib/util.cc:1010
+ #: src/lib/util.cc:1038
msgid "DCP will use every other frame of the source.\n"
msgstr "Le DCP utilisera une image sur deux de la source.\n"
- #: 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
+ #: 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
msgid "De-blocking"
msgstr "De-bloc"
- #: src/lib/filter.cc:75 src/lib/filter.cc:76 src/lib/filter.cc:77
- #: src/lib/filter.cc:78 src/lib/filter.cc:79 src/lib/filter.cc:80
- #: src/lib/filter.cc:81 src/lib/filter.cc:82 src/lib/filter.cc:83
+ #: src/lib/filter.cc:75
+ #: src/lib/filter.cc:76
+ #: src/lib/filter.cc:77
+ #: src/lib/filter.cc:78
+ #: src/lib/filter.cc:79
+ #: src/lib/filter.cc:80
+ #: src/lib/filter.cc:81
+ #: src/lib/filter.cc:82
+ #: src/lib/filter.cc:83
msgid "De-interlacing"
msgstr "Désentrelacement"
msgid "Dolby CP750"
msgstr "Dolby CP750"
- #: src/lib/util.cc:1012
+ #: src/lib/util.cc:1040
msgid "Each source frame will be doubled in the DCP.\n"
msgstr "Chaque image source sera dupliquée dans le DCP.\n"
- #: src/lib/job.cc:304
+ #: src/lib/job.cc:316
msgid "Error (%1)"
msgstr "Erreur (%1)"
msgid "Horizontal deblocking filter A"
msgstr "Filtre dé-bloc horizontal"
- #: src/lib/job.cc:96 src/lib/job.cc:105
- msgid ""
- "It is not known what caused this error. The best idea is to report the "
- "problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)"
- msgstr ""
- "Erreur indéterminée. Merci de rapporter le problème à la liste DCP-o-matic "
- "(dcpomatic@carlh.net)"
+ #: src/lib/job.cc:97
+ #: src/lib/job.cc:106
-msgid "It is not known what caused this error. The best idea is to report the problem to the DVD-o-matic mailing list (dvdomatic@carlh.net)"
-msgstr "Erreur indéterminée. Merci de rapporter le problème à la liste DVD-o-matic (dvdomatic@carlh.net)"
++msgid "It is not known what caused this error. The best idea is to report the problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)"
++msgstr "Erreur indéterminée. Merci de rapporter le problème à la liste DCP-o-matic (dcpomatic@carlh.net)"
#: src/lib/filter.cc:82
msgid "Kernel deinterlacer"
msgid "Lanczos"
msgstr "Lanczos"
- #: src/lib/util.cc:930
+ #: src/lib/util.cc:958
msgid "Left"
msgstr "Gauche"
- #: src/lib/util.cc:934
+ #: src/lib/util.cc:962
msgid "Left surround"
msgstr "Arrière gauche"
- #: src/lib/util.cc:933
+ #: src/lib/util.cc:961
msgid "Lfe (sub)"
msgstr "Basses fréquences"
msgid "Median deinterlacer"
msgstr "Désentrelaceur médian"
- #: src/lib/filter.cc:74 src/lib/filter.cc:85 src/lib/filter.cc:86
- #: src/lib/filter.cc:87 src/lib/filter.cc:90
+ #: src/lib/filter.cc:74
+ #: src/lib/filter.cc:85
+ #: src/lib/filter.cc:86
+ #: src/lib/filter.cc:87
+ #: src/lib/filter.cc:90
msgid "Misc"
msgstr "Divers"
msgid "Motion compensating deinterlacer"
msgstr "Désentrelaceur par compensation de mouvement"
- #: src/lib/filter.cc:84 src/lib/filter.cc:88 src/lib/filter.cc:89
+ #: src/lib/filter.cc:84
+ #: src/lib/filter.cc:88
+ #: src/lib/filter.cc:89
#: src/lib/filter.cc:91
msgid "Noise reduction"
msgstr "Réduction de bruit"
- #: src/lib/job.cc:302
+ #: src/lib/job.cc:314
msgid "OK (ran for %1)"
msgstr "OK (processus %1)"
msgid "Rating"
msgstr "Classification"
- #: src/lib/util.cc:500
+ #: src/lib/util.cc:513
msgid "Rec 709"
msgstr "Rec 709"
- #: src/lib/util.cc:931
+ #: src/lib/util.cc:959
msgid "Right"
msgstr "Droite"
- #: src/lib/util.cc:935
+ #: src/lib/util.cc:963
msgid "Right surround"
msgstr "Arrière droite"
msgid "Test"
msgstr "Test"
- #: src/lib/job.cc:78
- msgid ""
- "The drive that the film is stored on is low in disc space. Free some more "
- "space and try again."
- msgstr ""
- "Le disque contenant le film est plein. Libérez de l'espace et essayez à "
- "nouveau."
+ #: src/lib/job.cc:79
+ msgid "The drive that the film is stored on is low in disc space. Free some more space and try again."
+ msgstr "Le disque contenant le film est plein. Libérez de l'espace et essayez à nouveau."
#: src/lib/dcp_content_type.cc:46
msgid "Trailer"
msgid "Transitional"
msgstr "Transitional"
- #: src/lib/job.cc:104
+ #: src/lib/job.cc:105
msgid "Unknown error"
msgstr "Erreur inconnue"
msgid "cannot contain slashes"
msgstr "slash interdit"
- #: src/lib/util.cc:541
+ #: src/lib/util.cc:554
msgid "connect timed out"
msgstr "temps de connexion expiré"
msgid "could not find video decoder"
msgstr "décodeur vidéo introuvable"
- #: src/lib/sndfile_decoder.cc:72
+ #: src/lib/sndfile_decoder.cc:67
msgid "could not open external audio file for reading"
msgstr "lecture du fichier audio externe impossible"
#: src/lib/exceptions.cc:44
msgid "could not read from file %1 (%2)"
- msgstr "Création du dossier distant %1 impossible (%2)"
+ msgstr "création du dossier distant %1 impossible (%2)"
- #: src/lib/encoder.cc:137 src/lib/encoder.cc:314
+ #: src/lib/encoder.cc:137
+ #: src/lib/encoder.cc:314
msgid "could not run sample-rate converter"
msgstr "conversion de la fréquence d'échantillonnage impossible"
msgid "could not write to file %1 (%2)"
msgstr "Écriture vers fichier distant (%1) impossible (%2)"
- #: src/lib/sndfile_decoder.cc:94
+ #: src/lib/sndfile_decoder.cc:89
msgid "external audio files have differing lengths"
msgstr "Les fichiers audio externes ont des durées différentes"
- #: src/lib/sndfile_decoder.cc:76
+ #: src/lib/sndfile_decoder.cc:71
msgid "external audio files must be mono"
msgstr "les fichiers audio externes doivent être en mono"
msgid "frames per second"
msgstr "images par seconde"
- #: src/lib/util.cc:115
+ #: src/lib/util.cc:128
msgid "hour"
msgstr "heure"
- #: src/lib/util.cc:112 src/lib/util.cc:117
+ #: src/lib/util.cc:125
+ #: src/lib/util.cc:130
msgid "hours"
msgstr "heures"
- #: src/lib/util.cc:122
+ #: src/lib/util.cc:135
msgid "minute"
msgstr "minute"
- #: src/lib/util.cc:124
+ #: src/lib/util.cc:137
msgid "minutes"
msgstr "minutes"
- #: src/lib/util.cc:684
+ #: src/lib/util.cc:697
msgid "missing key %1 in key-value set"
msgstr "clé %1 non sélectionnée"
#: src/lib/exceptions.cc:54
msgid "missing required setting %1"
- msgstr ""
+ msgstr "paramètre %1 manquant"
#: src/lib/subtitle.cc:52
msgid "multi-part subtitles not yet supported"
msgstr "sous-titres en plusieurs parties non supportés"
- #: src/lib/film.cc:296 src/lib/film.cc:341
+ #: src/lib/film.cc:296
+ #: src/lib/film.cc:341
msgid "name"
msgstr "nom"
#. / TRANSLATORS: remaining here follows an amount of time that is remaining
#. / on an operation.
- #: src/lib/job.cc:299
+ #: src/lib/job.cc:311
msgid "remaining"
msgstr "restant"
- #: src/lib/util.cc:498
+ #: src/lib/util.cc:511
msgid "sRGB"
msgstr "sRGB"
- #: src/lib/util.cc:127
+ #: src/lib/util.cc:140
msgid "seconds"
msgstr "secondes"
msgstr ""
"Project-Id-Version: IT VERSION\n"
"Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2013-04-22 15:06+0100\n"
+ "POT-Creation-Date: 2013-05-09 09:51+0100\n"
"PO-Revision-Date: 2013-04-28 10:26+0100\n"
"Last-Translator: Maci <macibro@gmail.com>\n"
"Language-Team: \n"
msgid "Advertisement"
msgstr "Pubblicità"
- #: src/lib/job.cc:72
+ #: src/lib/job.cc:73
msgid "An error occurred whilst handling the file %1."
msgstr "Errore durante l'elaborazione del file %1."
msgid "Bilinear"
msgstr "Bilineare"
- #: src/lib/job.cc:306
+ #: src/lib/job.cc:318
msgid "Cancelled"
msgstr "Cancellato"
msgid "Cannot resample audio as libswresample is not present"
msgstr "Non posso ricampionare l'audio perchè libswresample non è presente"
- #: src/lib/util.cc:932
+ #: src/lib/util.cc:960
msgid "Centre"
msgstr "Centro"
msgid "Cubic interpolating deinterlacer"
msgstr "Deinterlacciatore cubico interpolato"
- #: src/lib/util.cc:1007
+ #: src/lib/util.cc:1035
msgid "DCP and source have the same rate.\n"
msgstr "Il DCP e il sorgente hanno la stessa frequenza.\n"
- #: src/lib/util.cc:1017
+ #: src/lib/util.cc:1045
msgid "DCP will run at %1%% of the source speed.\n"
msgstr "Il DCP andrà al %1%% della velocità del sorgente.\n"
- #: src/lib/util.cc:1010
+ #: src/lib/util.cc:1038
msgid "DCP will use every other frame of the source.\n"
msgstr "Il DCP userà ogni altro fotogramma del sorgente.\n"
msgid "Dolby CP750"
msgstr "Dolby CP750"
- #: src/lib/util.cc:1012
+ #: src/lib/util.cc:1040
msgid "Each source frame will be doubled in the DCP.\n"
msgstr "Ogni fotogramma del sorgente sarà raddoppiato nel DCP.\n"
- #: src/lib/job.cc:304
+ #: src/lib/job.cc:316
msgid "Error (%1)"
msgstr "Errore (%1)"
msgid "Horizontal deblocking filter A"
msgstr "Filtro A sblocco orizzontale"
- #: src/lib/job.cc:96 src/lib/job.cc:105
+ #: src/lib/job.cc:97 src/lib/job.cc:106
msgid ""
"It is not known what caused this error. The best idea is to report the "
-"problem to the DVD-o-matic mailing list (dvdomatic@carlh.net)"
+"problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)"
msgstr ""
"Non sappiamo cosa ha causato questo errore. La cosa migliore è inviare un "
-"report del problema alla mailing list di DVD-o-matic (dvdomatic@carlh.net)"
+"report del problema alla mailing list di DCP-o-matic (dcpomatic@carlh.net)"
#: src/lib/filter.cc:82
msgid "Kernel deinterlacer"
msgid "Lanczos"
msgstr "Lanczos"
- #: src/lib/util.cc:930
+ #: src/lib/util.cc:958
msgid "Left"
msgstr "Sinistro"
- #: src/lib/util.cc:934
+ #: src/lib/util.cc:962
msgid "Left surround"
msgstr "Surround sinistro"
- #: src/lib/util.cc:933
+ #: src/lib/util.cc:961
msgid "Lfe (sub)"
msgstr "Lfe(sub)"
msgid "Noise reduction"
msgstr "Riduzione del rumore"
- #: src/lib/job.cc:302
+ #: src/lib/job.cc:314
msgid "OK (ran for %1)"
msgstr "OK (eseguito in %1)"
msgid "Rating"
msgstr "Punteggio"
- #: src/lib/util.cc:500
+ #: src/lib/util.cc:513
msgid "Rec 709"
msgstr "Rec 709"
- #: src/lib/util.cc:931
+ #: src/lib/util.cc:959
msgid "Right"
msgstr "Destro"
- #: src/lib/util.cc:935
+ #: src/lib/util.cc:963
msgid "Right surround"
msgstr "Surround destro"
msgid "Test"
msgstr "Prova"
- #: src/lib/job.cc:78
+ #: src/lib/job.cc:79
msgid ""
"The drive that the film is stored on is low in disc space. Free some more "
"space and try again."
msgid "Transitional"
msgstr "Di transizione"
- #: src/lib/job.cc:104
+ #: src/lib/job.cc:105
msgid "Unknown error"
msgstr "Errore sconosciuto"
msgid "cannot contain slashes"
msgstr "non può contenere barre"
- #: src/lib/util.cc:541
+ #: src/lib/util.cc:554
msgid "connect timed out"
msgstr "connessione scaduta"
msgid "could not find video decoder"
msgstr "non riesco a trovare il decoder video"
- #: src/lib/sndfile_decoder.cc:72
+ #: src/lib/sndfile_decoder.cc:67
msgid "could not open external audio file for reading"
msgstr "non riesco ad aprire il file dell'audio esterno per leggerlo"
msgid "could not write to file %1 (%2)"
msgstr "non posso scrivere il file (%1)"
- #: src/lib/sndfile_decoder.cc:94
+ #: src/lib/sndfile_decoder.cc:89
msgid "external audio files have differing lengths"
msgstr "i files dell'audio esterno hanno durata diversa"
- #: src/lib/sndfile_decoder.cc:76
+ #: src/lib/sndfile_decoder.cc:71
msgid "external audio files must be mono"
msgstr "i files dell'audio esterno devono essere mono"
msgid "frames per second"
msgstr "fotogrammi al secondo"
- #: src/lib/util.cc:115
+ #: src/lib/util.cc:128
msgid "hour"
msgstr "ora"
- #: src/lib/util.cc:112 src/lib/util.cc:117
+ #: src/lib/util.cc:125 src/lib/util.cc:130
msgid "hours"
msgstr "ore"
- #: src/lib/util.cc:122
+ #: src/lib/util.cc:135
msgid "minute"
msgstr "minuto"
- #: src/lib/util.cc:124
+ #: src/lib/util.cc:137
msgid "minutes"
msgstr "minuti"
- #: src/lib/util.cc:684
+ #: src/lib/util.cc:697
msgid "missing key %1 in key-value set"
msgstr "persa la chiave %1 tra i valori chiave"
#. / TRANSLATORS: remaining here follows an amount of time that is remaining
#. / on an operation.
- #: src/lib/job.cc:299
+ #: src/lib/job.cc:311
msgid "remaining"
msgstr "restano"
- #: src/lib/util.cc:498
+ #: src/lib/util.cc:511
msgid "sRGB"
msgstr "sRGB"
- #: src/lib/util.cc:127
+ #: src/lib/util.cc:140
msgid "seconds"
msgstr "secondi"
#
msgid ""
msgstr ""
-"Project-Id-Version: DVD-o-matic\n"
+"Project-Id-Version: DCP-o-matic\n"
"Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2013-04-22 15:06+0100\n"
+ "POT-Creation-Date: 2013-05-09 09:51+0100\n"
"PO-Revision-Date: 2013-04-10 15:35+0100\n"
"Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
"Language-Team: \n"
msgid "Advertisement"
msgstr "Reklam"
- #: src/lib/job.cc:72
+ #: src/lib/job.cc:73
msgid "An error occurred whilst handling the file %1."
msgstr "Ett fel inträffade vid hantering av filen %1"
msgid "Bilinear"
msgstr "Bilinjär"
- #: src/lib/job.cc:306
+ #: src/lib/job.cc:318
msgid "Cancelled"
msgstr "Avbruten"
msgstr ""
"Kan inte omsampla ljudet eftersom libswresample inte finns tillgängligt"
- #: src/lib/util.cc:932
+ #: src/lib/util.cc:960
msgid "Centre"
msgstr "Mitt"
msgid "Cubic interpolating deinterlacer"
msgstr "Kubiskt interpolerande avflätare"
- #: src/lib/util.cc:1007
+ #: src/lib/util.cc:1035
msgid "DCP and source have the same rate.\n"
msgstr "DCP och källa har samma bildfrekvens.\n"
- #: src/lib/util.cc:1017
+ #: src/lib/util.cc:1045
msgid "DCP will run at %1%% of the source speed.\n"
msgstr "DCP kommer att köras på %1%% av källans hastighet.\n"
- #: src/lib/util.cc:1010
+ #: src/lib/util.cc:1038
msgid "DCP will use every other frame of the source.\n"
msgstr "DCP kommer att använda varannan bild från källan.\n"
msgid "Dolby CP750"
msgstr "Dolby CP750"
- #: src/lib/util.cc:1012
+ #: src/lib/util.cc:1040
msgid "Each source frame will be doubled in the DCP.\n"
msgstr "Varje bild från källan kommer att användas två gånger i DCPn.\n"
- #: src/lib/job.cc:304
+ #: src/lib/job.cc:316
msgid "Error (%1)"
msgstr "Fel (%1)"
msgid "Horizontal deblocking filter A"
msgstr "Filter för horisontal kantighetsutjämning A"
- #: src/lib/job.cc:96 src/lib/job.cc:105
+ #: src/lib/job.cc:97 src/lib/job.cc:106
msgid ""
"It is not known what caused this error. The best idea is to report the "
-"problem to the DVD-o-matic mailing list (dvdomatic@carlh.net)"
+"problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)"
msgstr ""
"Det är inte känt vad som orsakade detta fel. Bästa sättet att rapportera "
-"problemet är till DVD-o-matics mejl-lista (dvdomatic@carlh.net)"
+"problemet är till DCP-o-matics mejl-lista (dcpomatic@carlh.net)"
#: src/lib/filter.cc:82
msgid "Kernel deinterlacer"
msgid "Lanczos"
msgstr "Lanczos"
- #: src/lib/util.cc:930
+ #: src/lib/util.cc:958
msgid "Left"
msgstr "Vänster"
- #: src/lib/util.cc:934
+ #: src/lib/util.cc:962
msgid "Left surround"
msgstr "Vänster surround"
- #: src/lib/util.cc:933
+ #: src/lib/util.cc:961
msgid "Lfe (sub)"
msgstr "Lfe (sub)"
msgid "Noise reduction"
msgstr "Brusreducering"
- #: src/lib/job.cc:302
+ #: src/lib/job.cc:314
msgid "OK (ran for %1)"
msgstr "OK (kördes %1)"
msgid "Rating"
msgstr "Klassificeringsklipp"
- #: src/lib/util.cc:500
+ #: src/lib/util.cc:513
msgid "Rec 709"
msgstr "Rec 709"
- #: src/lib/util.cc:931
+ #: src/lib/util.cc:959
msgid "Right"
msgstr "Höger"
- #: src/lib/util.cc:935
+ #: src/lib/util.cc:963
msgid "Right surround"
msgstr "Höger surround"
msgid "Test"
msgstr "Test"
- #: src/lib/job.cc:78
+ #: src/lib/job.cc:79
msgid ""
"The drive that the film is stored on is low in disc space. Free some more "
"space and try again."
msgid "Transitional"
msgstr "Övergångsklipp"
- #: src/lib/job.cc:104
+ #: src/lib/job.cc:105
msgid "Unknown error"
msgstr "Okänt fel"
msgstr "får inte innehålla snedstreck"
# Svengelska
- #: src/lib/util.cc:541
+ #: src/lib/util.cc:554
#, fuzzy
msgid "connect timed out"
msgstr "uppkopplingen tajmade ur"
msgid "could not find video decoder"
msgstr "kunde inte hitta video-avkodare"
- #: src/lib/sndfile_decoder.cc:72
+ #: src/lib/sndfile_decoder.cc:67
msgid "could not open external audio file for reading"
msgstr "kunde inte öppna extern audio-fil för läsning"
msgid "could not write to file %1 (%2)"
msgstr "kunde inte skriva till fil %1 (%2)"
- #: src/lib/sndfile_decoder.cc:94
+ #: src/lib/sndfile_decoder.cc:89
msgid "external audio files have differing lengths"
msgstr "externa audio-filer har olika längder"
- #: src/lib/sndfile_decoder.cc:76
+ #: src/lib/sndfile_decoder.cc:71
msgid "external audio files must be mono"
msgstr "externa audio-filer måste vara mono"
msgid "frames per second"
msgstr "bilder per sekund"
- #: src/lib/util.cc:115
+ #: src/lib/util.cc:128
msgid "hour"
msgstr "timme"
- #: src/lib/util.cc:112 src/lib/util.cc:117
+ #: src/lib/util.cc:125 src/lib/util.cc:130
msgid "hours"
msgstr "timmar"
- #: src/lib/util.cc:122
+ #: src/lib/util.cc:135
msgid "minute"
msgstr "minut"
- #: src/lib/util.cc:124
+ #: src/lib/util.cc:137
msgid "minutes"
msgstr "minuter"
- #: src/lib/util.cc:684
+ #: src/lib/util.cc:697
msgid "missing key %1 in key-value set"
msgstr "saknad nyckel %1 i nyckel-värde grupp"
#. / TRANSLATORS: remaining here follows an amount of time that is remaining
#. / on an operation.
- #: src/lib/job.cc:299
+ #: src/lib/job.cc:311
msgid "remaining"
msgstr "återstående tid"
- #: src/lib/util.cc:498
+ #: src/lib/util.cc:511
msgid "sRGB"
msgstr "sRGB"
- #: src/lib/util.cc:127
+ #: src/lib/util.cc:140
msgid "seconds"
msgstr "sekunder"
#include <iostream>
#include <fstream>
#include <climits>
-#ifdef DVDOMATIC_POSIX
+#ifdef DCPOMATIC_POSIX
#include <execinfo.h>
#include <cxxabi.h>
#endif
#include <boost/lexical_cast.hpp>
#include <boost/thread.hpp>
#include <boost/filesystem.hpp>
+ #include <glib.h>
#include <openjpeg.h>
#include <openssl/md5.h>
#include <magick/MagickCore.h>
#include "filter.h"
#include "sound_processor.h"
#include "config.h"
+ #ifdef DVDOMATIC_WINDOWS
+ #include "stack.hpp"
+ #endif
#include "i18n.h"
-using std::cout;
using std::string;
using std::stringstream;
-using std::list;
+using std::setfill;
using std::ostream;
+using std::endl;
using std::vector;
+using std::hex;
+using std::setw;
using std::ifstream;
-using std::istream;
+using std::ios;
using std::min;
using std::max;
+using std::list;
using std::multimap;
+using std::istream;
+using std::numeric_limits;
using std::pair;
+ using std::ofstream;
using boost::shared_ptr;
+using boost::thread;
using boost::lexical_cast;
using boost::optional;
using libdcp::Size;
boost::thread::id ui_thread;
+ boost::filesystem::path backtrace_file;
/** Convert some number of seconds to a string representation
* in hours, minutes and seconds.
return hms.str ();
}
+string
+time_to_hms (Time t)
+{
+ return seconds_to_hms (t / TIME_HZ);
+}
+
/** @param s Number of seconds.
* @return String containing an approximate description of s (e.g. "about 2 hours")
*/
return ap.str ();
}
-#ifdef DVDOMATIC_POSIX
+#ifdef DCPOMATIC_POSIX
/** @param l Mangled C++ identifier.
* @return Demangled version.
*/
return t.tv_sec + (double (t.tv_usec) / 1e6);
}
- /** Call the required functions to set up DCP-o-matic's static arrays, etc.
+ #ifdef DVDOMATIC_WINDOWS
+ LONG WINAPI exception_handler(struct _EXCEPTION_POINTERS *)
+ {
+ dbg::stack s;
+ ofstream f (backtrace_file.string().c_str());
+ std::copy(s.begin(), s.end(), std::ostream_iterator<dbg::stack_frame>(f, "\n"));
+ return EXCEPTION_CONTINUE_SEARCH;
+ }
+ #endif
+
+ /** Call the required functions to set up DVD-o-matic's static arrays, etc.
* Must be called from the UI thread, if there is one.
*/
void
-dvdomatic_setup ()
+dcpomatic_setup ()
{
+ #ifdef DVDOMATIC_WINDOWS
+ backtrace_file /= g_get_user_config_dir ();
+ backtrace_file /= "backtrace.txt";
+ SetUnhandledExceptionFilter(exception_handler);
+ #endif
+
avfilter_register_all ();
Format::setup_formats ();
ui_thread = boost::this_thread::get_id ();
}
-#ifdef DVDOMATIC_WINDOWS
+#ifdef DCPOMATIC_WINDOWS
boost::filesystem::path
mo_path ()
{
#endif
void
-dvdomatic_setup_gettext_i18n (string lang)
+dcpomatic_setup_gettext_i18n (string lang)
{
-#ifdef DVDOMATIC_POSIX
+#ifdef DCPOMATIC_POSIX
lang += ".UTF8";
#endif
}
setlocale (LC_ALL, "");
- textdomain ("libdvdomatic");
+ textdomain ("libdcpomatic");
-#ifdef DVDOMATIC_WINDOWS
- bindtextdomain ("libdvdomatic", mo_path().string().c_str());
- bind_textdomain_codeset ("libdvdomatic", "UTF8");
+#ifdef DCPOMATIC_WINDOWS
+ bindtextdomain ("libdcpomatic", mo_path().string().c_str());
+ bind_textdomain_codeset ("libdcpomatic", "UTF8");
#endif
-#ifdef DVDOMATIC_POSIX
- bindtextdomain ("libdvdomatic", POSIX_LOCALE_PREFIX);
+#ifdef DCPOMATIC_POSIX
+ bindtextdomain ("libdcpomatic", POSIX_LOCALE_PREFIX);
#endif
}
* @return MD5 digest of file's contents.
*/
string
-md5_digest (string file)
+md5_digest (boost::filesystem::path file)
{
- ifstream f (file.c_str(), std::ios::binary);
+ ifstream f (file.string().c_str(), std::ios::binary);
if (!f.good ()) {
- throw OpenFileError (file);
+ throw OpenFileError (file.string());
}
f.seekg (0, std::ios::end);
return (fabs (a - b) < 1e-4);
}
-class FrameRateCandidate
-{
-public:
- FrameRateCandidate (float source_, int dcp_)
- : source (source_)
- , dcp (dcp_)
- {}
-
- float source;
- int dcp;
-};
-
-int
-best_dcp_frame_rate (float source_fps)
-{
- list<int> const allowed_dcp_frame_rates = Config::instance()->allowed_dcp_frame_rates ();
-
- /* Work out what rates we could manage, including those achieved by using skip / repeat. */
- list<FrameRateCandidate> candidates;
-
- /* Start with the ones without skip / repeat so they will get matched in preference to skipped/repeated ones */
- for (list<int>::const_iterator i = allowed_dcp_frame_rates.begin(); i != allowed_dcp_frame_rates.end(); ++i) {
- candidates.push_back (FrameRateCandidate (*i, *i));
- }
-
- /* Then the skip/repeat ones */
- for (list<int>::const_iterator i = allowed_dcp_frame_rates.begin(); i != allowed_dcp_frame_rates.end(); ++i) {
- candidates.push_back (FrameRateCandidate (float (*i) / 2, *i));
- candidates.push_back (FrameRateCandidate (float (*i) * 2, *i));
- }
-
- /* Pick the best one, bailing early if we hit an exact match */
- float error = std::numeric_limits<float>::max ();
- optional<FrameRateCandidate> best;
- list<FrameRateCandidate>::iterator i = candidates.begin();
- while (i != candidates.end()) {
-
- if (about_equal (i->source, source_fps)) {
- best = *i;
- break;
- }
-
- float const e = fabs (i->source - source_fps);
- if (e < error) {
- error = e;
- best = *i;
- }
-
- ++i;
- }
-
- assert (best);
- return best->dcp;
-}
-
-/** @param An arbitrary sampling rate.
- * @return The appropriate DCP-approved sampling rate (48kHz or 96kHz).
+/** @param An arbitrary audio frame rate.
+ * @return The appropriate DCP-approved frame rate (48kHz or 96kHz).
*/
int
-dcp_audio_sample_rate (int fs)
+dcp_audio_frame_rate (int fs)
{
if (fs <= 48000) {
return 48000;
return 96000;
}
-bool operator== (Crop const & a, Crop const & b)
-{
- return (a.left == b.left && a.right == b.right && a.top == b.top && a.bottom == b.bottom);
-}
-
-bool operator!= (Crop const & a, Crop const & b)
-{
- return !(a == b);
-}
-
/** @param index Colour LUT index.
* @return Human-readable name.
*/
return ntohl (v);
}
-/** @param other A Rect.
- * @return The intersection of this with `other'.
- */
-Rect
-Rect::intersection (Rect const & other) const
-{
- int const tx = max (x, other.x);
- int const ty = max (y, other.y);
-
- return Rect (
- tx, ty,
- min (x + width, other.x + other.width) - tx,
- min (y + height, other.y + other.height) - ty
- );
-}
-
/** Round a number up to the nearest multiple of another number.
* @param c Index.
* @param s Array of numbers to round, indexed by c.
return lexical_cast<int> (i->second);
}
-/** Construct an AudioBuffers. Audio data is undefined after this constructor.
- * @param channels Number of channels.
- * @param frames Number of frames to reserve space for.
- */
-AudioBuffers::AudioBuffers (int channels, int frames)
- : _channels (channels)
- , _frames (frames)
- , _allocated_frames (frames)
-{
- _data = new float*[_channels];
- for (int i = 0; i < _channels; ++i) {
- _data[i] = new float[frames];
- }
-}
-
-/** Copy constructor.
- * @param other Other AudioBuffers; data is copied.
- */
-AudioBuffers::AudioBuffers (AudioBuffers const & other)
- : _channels (other._channels)
- , _frames (other._frames)
- , _allocated_frames (other._frames)
-{
- _data = new float*[_channels];
- for (int i = 0; i < _channels; ++i) {
- _data[i] = new float[_frames];
- memcpy (_data[i], other._data[i], _frames * sizeof (float));
- }
-}
-
-/* XXX: it's a shame that this is a copy-and-paste of the above;
- probably fixable with c++0x.
-*/
-AudioBuffers::AudioBuffers (boost::shared_ptr<const AudioBuffers> other)
- : _channels (other->_channels)
- , _frames (other->_frames)
- , _allocated_frames (other->_frames)
-{
- _data = new float*[_channels];
- for (int i = 0; i < _channels; ++i) {
- _data[i] = new float[_frames];
- memcpy (_data[i], other->_data[i], _frames * sizeof (float));
- }
-}
-
-/** AudioBuffers destructor */
-AudioBuffers::~AudioBuffers ()
-{
- for (int i = 0; i < _channels; ++i) {
- delete[] _data[i];
- }
-
- delete[] _data;
-}
-
-/** @param c Channel index.
- * @return Buffer for this channel.
- */
-float*
-AudioBuffers::data (int c) const
-{
- assert (c >= 0 && c < _channels);
- return _data[c];
-}
-
-/** Set the number of frames that these AudioBuffers will report themselves
- * as having.
- * @param f Frames; must be less than or equal to the number of allocated frames.
- */
-void
-AudioBuffers::set_frames (int f)
-{
- assert (f <= _allocated_frames);
- _frames = f;
-}
-
-/** Make all samples on all channels silent */
-void
-AudioBuffers::make_silent ()
-{
- for (int i = 0; i < _channels; ++i) {
- make_silent (i);
- }
-}
-
-/** Make all samples on a given channel silent.
- * @param c Channel.
- */
-void
-AudioBuffers::make_silent (int c)
-{
- assert (c >= 0 && c < _channels);
-
- for (int i = 0; i < _frames; ++i) {
- _data[c][i] = 0;
- }
-}
-
-/** Copy data from another AudioBuffers to this one. All channels are copied.
- * @param from AudioBuffers to copy from; must have the same number of channels as this.
- * @param frames_to_copy Number of frames to copy.
- * @param read_offset Offset to read from in `from'.
- * @param write_offset Offset to write to in `to'.
- */
-void
-AudioBuffers::copy_from (AudioBuffers* from, int frames_to_copy, int read_offset, int write_offset)
-{
- assert (from->channels() == channels());
-
- assert (from);
- assert (read_offset >= 0 && (read_offset + frames_to_copy) <= from->_allocated_frames);
- assert (write_offset >= 0 && (write_offset + frames_to_copy) <= _allocated_frames);
-
- for (int i = 0; i < _channels; ++i) {
- memcpy (_data[i] + write_offset, from->_data[i] + read_offset, frames_to_copy * sizeof(float));
- }
-}
-
-/** Move audio data around.
- * @param from Offset to move from.
- * @param to Offset to move to.
- * @param frames Number of frames to move.
- */
-
-void
-AudioBuffers::move (int from, int to, int frames)
-{
- if (frames == 0) {
- return;
- }
-
- assert (from >= 0);
- assert (from < _frames);
- assert (to >= 0);
- assert (to < _frames);
- assert (frames > 0);
- assert (frames <= _frames);
- assert ((from + frames) <= _frames);
- assert ((to + frames) <= _frames);
-
- for (int i = 0; i < _channels; ++i) {
- memmove (_data[i] + to, _data[i] + from, frames * sizeof(float));
- }
-}
-
/** Trip an assert if the caller is not in the UI thread */
void
ensure_ui_thread ()
assert (boost::this_thread::get_id() == ui_thread);
}
-/** @param v Source video frame.
+/** @param v Content video frame.
* @param audio_sample_rate Source audio sample rate.
* @param frames_per_second Number of video frames per second.
* @return Equivalent number of audio frames for `v'.
*/
int64_t
-video_frames_to_audio_frames (SourceFrame v, float audio_sample_rate, float frames_per_second)
+video_frames_to_audio_frames (ContentVideoFrame v, float audio_sample_rate, float frames_per_second)
{
return ((int64_t) v * audio_sample_rate / frames_per_second);
}
-/** @param f Filename.
- * @return true if this file is a still image, false if it is something else.
- */
-bool
-still_image_file (string f)
-{
- string ext = boost::filesystem::path(f).extension().string();
-
- transform (ext.begin(), ext.end(), ext.begin(), ::tolower);
-
- return (ext == N_(".tif") || ext == N_(".tiff") || ext == N_(".jpg") || ext == N_(".jpeg") || ext == N_(".png") || ext == N_(".bmp"));
-}
-
/** @return A pair containing CPU model name and the number of processors */
pair<string, int>
cpu_info ()
pair<string, int> info;
info.second = 0;
-#ifdef DVDOMATIC_POSIX
+#ifdef DCPOMATIC_POSIX
ifstream f (N_("/proc/cpuinfo"));
while (f.good ()) {
string l;
return channels[c];
}
-AudioMapping::AudioMapping (int c)
- : _source_channels (c)
-{
-
-}
-
-optional<libdcp::Channel>
-AudioMapping::source_to_dcp (int c) const
-{
- if (c >= _source_channels) {
- return optional<libdcp::Channel> ();
- }
-
- if (_source_channels == 1) {
- /* mono sources to centre */
- return libdcp::CENTRE;
- }
-
- return static_cast<libdcp::Channel> (c);
-}
-
-optional<int>
-AudioMapping::dcp_to_source (libdcp::Channel c) const
-{
- if (_source_channels == 1) {
- if (c == libdcp::CENTRE) {
- return 0;
- } else {
- return optional<int> ();
- }
- }
-
- if (static_cast<int> (c) >= _source_channels) {
- return optional<int> ();
- }
-
- return static_cast<int> (c);
-}
-
-int
-AudioMapping::dcp_channels () const
-{
- if (_source_channels == 1) {
- /* The source is mono, so to put the mono channel into
- the centre we need to generate a 5.1 soundtrack.
- */
- return 6;
- }
-
- return _source_channels;
-}
-
FrameRateConversion::FrameRateConversion (float source, int dcp)
: skip (false)
, repeat (false)
if (old) {
_old = strdup (old);
- if (strcmp (_old, "POSIX")) {
- setlocale (LC_NUMERIC, "POSIX");
+ if (strcmp (_old, "C")) {
+ setlocale (LC_NUMERIC, "C");
}
}
}
ab_transcoder.cc
analyse_audio_job.cc
audio_analysis.cc
+ audio_buffers.cc
+ audio_content.cc
audio_decoder.cc
+ audio_mapping.cc
audio_source.cc
config.cc
combiner.cc
+ content.cc
cross.cc
dci_metadata.cc
dcp_content_type.cc
dcp_video_frame.cc
decoder.cc
- decoder_factory.cc
- delay_line.cc
dolby_cp750.cc
encoder.cc
examine_content_job.cc
exceptions.cc
filter_graph.cc
ffmpeg_compatibility.cc
+ ffmpeg_content.cc
ffmpeg_decoder.cc
film.cc
filter.cc
format.cc
- gain.cc
image.cc
+ imagemagick_content.cc
imagemagick_decoder.cc
job.cc
job_manager.cc
log.cc
lut.cc
- matcher.cc
+ player.cc
+ playlist.cc
scp_dcp_job.cc
scaler.cc
server.cc
+ sndfile_content.cc
sndfile_decoder.cc
sound_processor.cc
- stream.cc
subtitle.cc
timer.cc
transcode_job.cc
transcoder.cc
- trimmer.cc
+ types.cc
ui_signaller.cc
util.cc
+ video_content.cc
video_decoder.cc
video_source.cc
writer.cc
else:
obj = bld(features = 'cxx cxxshlib')
- obj.name = 'libdvdomatic'
+ obj.name = 'libdcpomatic'
obj.export_includes = ['.']
obj.uselib = """
AVCODEC AVUTIL AVFORMAT AVFILTER SWSCALE SWRESAMPLE
BOOST_FILESYSTEM BOOST_THREAD BOOST_DATETIME BOOST_SIGNALS2
- SNDFILE OPENJPEG POSTPROC TIFF MAGICK SSH DCP GLIB LZMA
+ SNDFILE OPENJPEG POSTPROC TIFF MAGICK SSH DCP CXML GLIB LZMA
"""
+
+ obj.source = sources + ' version.cc'
+
if bld.env.TARGET_WINDOWS:
- obj.uselib += ' WINSOCK2'
+ obj.uselib += ' WINSOCK2 BFD DBGHELP IBERTY'
+ obj.source += ' stack.cpp'
+ if bld.env.STATIC:
+ obj.uselib += ' XML++'
+ obj.source = sources + " version.cc"
+ obj.target = 'dcpomatic'
- obj.target = 'dvdomatic'
-
- i18n.po_to_mo(os.path.join('src', 'lib'), 'libdvdomatic', bld)
+ i18n.po_to_mo(os.path.join('src', 'lib'), 'libdcpomatic', bld)
def pot(bld):
- i18n.pot(os.path.join('src', 'lib'), sources, 'libdvdomatic')
+ i18n.pot(os.path.join('src', 'lib'), sources, 'libdcpomatic')
def pot_merge(bld):
- i18n.pot_merge(os.path.join('src', 'lib'), 'libdvdomatic')
+ i18n.pot_merge(os.path.join('src', 'lib'), 'libdcpomatic')
#
msgid ""
msgstr ""
-"Project-Id-Version: DVDOMATIC\n"
+"Project-Id-Version: DCPOMATIC\n"
"Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2013-04-22 15:06+0100\n"
+ "POT-Creation-Date: 2013-05-09 09:51+0100\n"
"PO-Revision-Date: 2013-03-23 21:08-0500\n"
"Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n"
"Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.5\n"
- #: src/tools/dcpomatic.cc:177
+ #: src/tools/dvdomatic.cc:178
msgid "&Analyse audio"
msgstr "&Analizar audio"
- #: src/tools/dcpomatic.cc:183
+ #: src/tools/dvdomatic.cc:184
msgid "&Edit"
msgstr "&Editar"
- #: src/tools/dcpomatic.cc:182
+ #: src/tools/dvdomatic.cc:183
msgid "&File"
msgstr "&Archivo"
- #: src/tools/dcpomatic.cc:185
+ #: src/tools/dvdomatic.cc:186
msgid "&Help"
msgstr "&Ayuda"
- #: src/tools/dcpomatic.cc:184
+ #: src/tools/dvdomatic.cc:185
msgid "&Jobs"
msgstr "&Tareas"
- #: src/tools/dcpomatic.cc:173
+ #: src/tools/dvdomatic.cc:174
msgid "&Make DCP"
msgstr "&Crear DCP"
- #: src/tools/dcpomatic.cc:161
+ #: src/tools/dvdomatic.cc:162
msgid "&Open..."
msgstr "&Abrir..."
- #: src/tools/dcpomatic.cc:170
+ #: src/tools/dvdomatic.cc:171
msgid "&Preferences..."
msgstr "&Preferencias..."
- #: src/tools/dcpomatic.cc:165
+ #: src/tools/dvdomatic.cc:166
msgid "&Properties..."
msgstr "&Propiedades..."
- #: src/tools/dcpomatic.cc:167
+ #: src/tools/dvdomatic.cc:168
msgid "&Quit"
msgstr "&Salir"
- #: src/tools/dcpomatic.cc:163
+ #: src/tools/dvdomatic.cc:164
msgid "&Save"
msgstr "&Guardar"
- #: src/tools/dcpomatic.cc:174
+ #: src/tools/dvdomatic.cc:175
msgid "&Send DCP to TMS"
msgstr "&Enviar DCP al TMS"
- #: src/tools/dcpomatic.cc:417
+ #: src/tools/dvdomatic.cc:426
msgid ""
"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
msgstr ""
"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
- #: src/tools/dcpomatic.cc:180
+ #: src/tools/dvdomatic.cc:181
msgid "About"
msgstr "Acerca de"
- #: src/tools/dcpomatic.cc:527
+ #: src/tools/dvdomatic.cc:502
#, fuzzy
msgid "Could not load film %1 (%2)"
msgstr "No se pudo cargar la película %s (%s)"
- #: src/tools/dcpomatic.cc:339
+ #: src/tools/dvdomatic.cc:348
#, c-format
msgid "Could not open film at %s (%s)"
msgstr "No se pudo cargar la película en %s (%s)"
++<<<<<<< HEAD
+#: src/tools/dcpomatic.cc:287 src/tools/dcpomatic.cc:410
+#: src/tools/dcpomatic.cc:531
+msgid "DCP-o-matic"
+msgstr "DCP-o-matic"
+
+#: src/tools/dcpomatic.cc:75
+msgid "Film changed"
+msgstr "Película cambiada"
+
+#: src/tools/dcpomatic.cc:416
+ #: src/tools/dvdomatic.cc:288 src/tools/dvdomatic.cc:419
+ #: src/tools/dvdomatic.cc:506
+ msgid "DVD-o-matic"
+ msgstr "DVD-o-matic"
+
+ #: src/tools/dvdomatic.cc:76
+ msgid "Film changed"
+ msgstr "Película cambiada"
+
+ #: src/tools/dvdomatic.cc:425
msgid "Free, open-source DCP generation from almost anything."
msgstr ""
"Generación de DCP a partir de casi cualquier fuente, libre y de código "
"abierto."
- #: src/tools/dcpomatic.cc:160
+ #: src/tools/dvdomatic.cc:161
msgid "New..."
msgstr "Nuevo..."
- #: src/tools/dcpomatic.cc:175
+ #: src/tools/dvdomatic.cc:176
msgid "S&how DCP"
msgstr "&Mostrar DCP"
- #: src/tools/dcpomatic.cc:74
+ #: src/tools/dvdomatic.cc:75
+ #, c-format
msgid "Save changes to film \"%s\" before closing?"
msgstr ""
- #: src/tools/dcpomatic.cc:319
+ #: src/tools/dvdomatic.cc:328
msgid "Select film to open"
msgstr "Selecciona la película a abrir"
- #: src/tools/dcpomatic.cc:303
- #, fuzzy
- msgid "The directory %1 already exists."
- msgstr "La carpeta %s ya existe."
+ #: src/tools/dvdomatic.cc:307
+ msgid ""
+ "The directory %1 already exists and is not empty. Are you sure you want to "
+ "use it?"
+ msgstr ""
- #: src/tools/dcpomatic.cc:324
+ #: src/tools/dvdomatic.cc:333
msgid ""
"You did not select a folder. Make sure that you select a folder before "
"clicking Open."
msgstr ""
+
+ #, fuzzy
+ #~ msgid "The directory %1 already exists."
+ #~ msgstr "La carpeta %s ya existe."
#
msgid ""
msgstr ""
-"Project-Id-Version: DVD-o-matic FRENCH\n"
+"Project-Id-Version: DCP-o-matic FRENCH\n"
"Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2013-04-22 15:06+0100\n"
- "PO-Revision-Date: 2013-03-13 22:33+0100\n"
+ "POT-Creation-Date: 2013-05-09 09:51+0100\n"
+ "PO-Revision-Date: 2013-05-10 14:09+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: \n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
- #: src/tools/dcpomatic.cc:177
+ #: src/tools/dvdomatic.cc:178
msgid "&Analyse audio"
msgstr "&Analyser le son"
- #: src/tools/dcpomatic.cc:183
+ #: src/tools/dvdomatic.cc:184
msgid "&Edit"
msgstr "&Edition"
- #: src/tools/dcpomatic.cc:182
+ #: src/tools/dvdomatic.cc:183
msgid "&File"
msgstr "&Fichier"
- #: src/tools/dcpomatic.cc:185
+ #: src/tools/dvdomatic.cc:186
msgid "&Help"
msgstr "&Aide"
- #: src/tools/dcpomatic.cc:184
+ #: src/tools/dvdomatic.cc:185
msgid "&Jobs"
msgstr "&Travaux"
- #: src/tools/dcpomatic.cc:173
+ #: src/tools/dvdomatic.cc:174
msgid "&Make DCP"
msgstr "&Créer le DCP"
- #: src/tools/dcpomatic.cc:161
+ #: src/tools/dvdomatic.cc:162
msgid "&Open..."
msgstr "&Ouvrir..."
- #: src/tools/dcpomatic.cc:170
+ #: src/tools/dvdomatic.cc:171
msgid "&Preferences..."
msgstr "&Préférences..."
- #: src/tools/dcpomatic.cc:165
+ #: src/tools/dvdomatic.cc:166
msgid "&Properties..."
msgstr "&Propriétés..."
- #: src/tools/dcpomatic.cc:167
+ #: src/tools/dvdomatic.cc:168
msgid "&Quit"
msgstr "&Quitter"
- #: src/tools/dcpomatic.cc:163
+ #: src/tools/dvdomatic.cc:164
msgid "&Save"
msgstr "&Enregistrer"
- #: src/tools/dcpomatic.cc:174
+ #: src/tools/dvdomatic.cc:175
msgid "&Send DCP to TMS"
msgstr "&Envoyer le DCP dans le TMS"
- #: src/tools/dcpomatic.cc:417
- msgid ""
- "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
- msgstr ""
- "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
+ #: src/tools/dvdomatic.cc:426
+ msgid "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
+ msgstr "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
- #: src/tools/dcpomatic.cc:180
+ #: src/tools/dvdomatic.cc:181
msgid "About"
msgstr "A Propos"
- #: src/tools/dcpomatic.cc:527
+ #: src/tools/dvdomatic.cc:502
#, fuzzy
msgid "Could not load film %1 (%2)"
msgstr "Impossible de charger le film %s (%s)"
- #: src/tools/dcpomatic.cc:339
+ #: src/tools/dvdomatic.cc:348
#, c-format
msgid "Could not open film at %s (%s)"
msgstr "Impossible d'ouvrir le film à %s (%s)"
- #: src/tools/dcpomatic.cc:287 src/tools/dcpomatic.cc:410
- #: src/tools/dcpomatic.cc:531
- msgid "DCP-o-matic"
- msgstr "DCP-o-matic"
+ #: src/tools/dvdomatic.cc:288
+ #: src/tools/dvdomatic.cc:419
+ #: src/tools/dvdomatic.cc:506
+ msgid "DVD-o-matic"
+ msgstr "DVD-o-matic"
- #: src/tools/dcpomatic.cc:75
+ #: src/tools/dvdomatic.cc:76
msgid "Film changed"
msgstr "Film changé"
- #: src/tools/dcpomatic.cc:416
+ #: src/tools/dvdomatic.cc:425
msgid "Free, open-source DCP generation from almost anything."
msgstr "Création de DCP libre et open-source à partir de presque tout."
- #: src/tools/dcpomatic.cc:160
+ #: src/tools/dvdomatic.cc:161
msgid "New..."
msgstr "Nouveau..."
- #: src/tools/dcpomatic.cc:175
+ #: src/tools/dvdomatic.cc:176
msgid "S&how DCP"
msgstr "Voir le DCP"
- #: src/tools/dcpomatic.cc:74
+ #: src/tools/dvdomatic.cc:75
+ #, c-format
msgid "Save changes to film \"%s\" before closing?"
- msgstr ""
+ msgstr "Enregistrer les changements du film \"%s\" avant de fermer ?"
- #: src/tools/dcpomatic.cc:319
+ #: src/tools/dvdomatic.cc:328
msgid "Select film to open"
msgstr "Sélectionner le film à ouvrir"
- #: src/tools/dcpomatic.cc:303
- #, fuzzy
- msgid "The directory %1 already exists."
- msgstr "Le dossier %s existe déjà."
+ #: src/tools/dvdomatic.cc:307
+ msgid "The directory %1 already exists and is not empty. Are you sure you want to use it?"
+ msgstr "Le dossier %1 existe et n'est pas vide. Etes-vous sûr de vouloir l'utiliser ?"
- #: src/tools/dcpomatic.cc:324
- msgid ""
- "You did not select a folder. Make sure that you select a folder before "
- "clicking Open."
- msgstr ""
+ #: src/tools/dvdomatic.cc:333
+ msgid "You did not select a folder. Make sure that you select a folder before clicking Open."
+ msgstr "Aucun dossier sélectionné. Selectionnez un dossier avant de cliquer sur Ouvrir"
+
+ #, fuzzy
+ #~ msgid "The directory %1 already exists."
+ #~ msgstr "Le dossier %s existe déjà."
#
msgid ""
msgstr ""
-"Project-Id-Version: DVD-o-matic\n"
+"Project-Id-Version: DCP-o-matic\n"
"Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2013-04-22 15:06+0100\n"
+ "POT-Creation-Date: 2013-05-09 09:51+0100\n"
"PO-Revision-Date: 2013-04-09 10:12+0100\n"
"Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
"Language-Team: \n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.5\n"
- #: src/tools/dcpomatic.cc:177
+ #: src/tools/dvdomatic.cc:178
msgid "&Analyse audio"
msgstr "&Analysera audio"
- #: src/tools/dcpomatic.cc:183
+ #: src/tools/dvdomatic.cc:184
msgid "&Edit"
msgstr "&Redigera"
- #: src/tools/dcpomatic.cc:182
+ #: src/tools/dvdomatic.cc:183
msgid "&File"
msgstr "&Fil"
- #: src/tools/dcpomatic.cc:185
+ #: src/tools/dvdomatic.cc:186
msgid "&Help"
msgstr "&Hjälp"
- #: src/tools/dcpomatic.cc:184
+ #: src/tools/dvdomatic.cc:185
msgid "&Jobs"
msgstr "&Jobb"
- #: src/tools/dcpomatic.cc:173
+ #: src/tools/dvdomatic.cc:174
msgid "&Make DCP"
msgstr "&Skapa DCP"
- #: src/tools/dcpomatic.cc:161
+ #: src/tools/dvdomatic.cc:162
msgid "&Open..."
msgstr "&Öppna"
- #: src/tools/dcpomatic.cc:170
+ #: src/tools/dvdomatic.cc:171
msgid "&Preferences..."
msgstr "&Inställningar"
- #: src/tools/dcpomatic.cc:165
+ #: src/tools/dvdomatic.cc:166
msgid "&Properties..."
msgstr "&Egenskaper"
- #: src/tools/dcpomatic.cc:167
+ #: src/tools/dvdomatic.cc:168
msgid "&Quit"
msgstr "&Avsluta"
- #: src/tools/dcpomatic.cc:163
+ #: src/tools/dvdomatic.cc:164
msgid "&Save"
msgstr "&Spara"
- #: src/tools/dcpomatic.cc:174
+ #: src/tools/dvdomatic.cc:175
msgid "&Send DCP to TMS"
msgstr "&Skicka DCP till TMS"
- #: src/tools/dcpomatic.cc:417
+ #: src/tools/dvdomatic.cc:426
msgid ""
"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
msgstr ""
"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
- #: src/tools/dcpomatic.cc:180
+ #: src/tools/dvdomatic.cc:181
msgid "About"
msgstr "Om"
- #: src/tools/dcpomatic.cc:527
+ #: src/tools/dvdomatic.cc:502
msgid "Could not load film %1 (%2)"
msgstr "Kunde inte öppna filmen %1 (%2)"
- #: src/tools/dcpomatic.cc:339
+ #: src/tools/dvdomatic.cc:348
#, c-format
msgid "Could not open film at %s (%s)"
msgstr "Kunde inte öppna filmen vid %s (%s)"
- #: src/tools/dcpomatic.cc:287 src/tools/dcpomatic.cc:410
- #: src/tools/dcpomatic.cc:531
+ #: src/tools/dvdomatic.cc:288 src/tools/dvdomatic.cc:419
+ #: src/tools/dvdomatic.cc:506
-msgid "DVD-o-matic"
-msgstr "DVD-o-matic"
+msgid "DCP-o-matic"
+msgstr "DCP-o-matic"
- #: src/tools/dcpomatic.cc:75
+ #: src/tools/dvdomatic.cc:76
msgid "Film changed"
msgstr "Film ändrad"
- #: src/tools/dcpomatic.cc:416
+ #: src/tools/dvdomatic.cc:425
msgid "Free, open-source DCP generation from almost anything."
msgstr ""
"Fri, öppen-källkodsprogramvara för DCP-generering från nästan vad som helst."
- #: src/tools/dcpomatic.cc:160
+ #: src/tools/dvdomatic.cc:161
msgid "New..."
msgstr "Ny..."
- #: src/tools/dcpomatic.cc:175
+ #: src/tools/dvdomatic.cc:176
msgid "S&how DCP"
msgstr "&Visa DCP"
- #: src/tools/dcpomatic.cc:74
+ #: src/tools/dvdomatic.cc:75
+ #, fuzzy, c-format
msgid "Save changes to film \"%s\" before closing?"
-msgstr "Spara ändringarna till filmen \"%1\" före avslut?"
+msgstr "Spara ändringarna till filmen \"%s\" före avslut?"
- #: src/tools/dcpomatic.cc:319
+ #: src/tools/dvdomatic.cc:328
msgid "Select film to open"
msgstr "Välj film att öppna"
- #: src/tools/dcpomatic.cc:303
- msgid "The directory %1 already exists."
- msgstr "Katalogen %1 finns redan."
+ #: src/tools/dvdomatic.cc:307
+ msgid ""
+ "The directory %1 already exists and is not empty. Are you sure you want to "
+ "use it?"
+ msgstr ""
- #: src/tools/dcpomatic.cc:324
+ #: src/tools/dvdomatic.cc:333
msgid ""
"You did not select a folder. Make sure that you select a folder before "
"clicking Open."
msgstr ""
"Du har inte valt en folder. Se till att välja en folder innan du klickar på "
"Öppna."
+
+ #~ msgid "The directory %1 already exists."
+ #~ msgstr "Katalogen %1 finns redan."
#
msgid ""
msgstr ""
-"Project-Id-Version: libdvdomatic-wx\n"
+"Project-Id-Version: libdcpomatic-wx\n"
"Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2013-04-22 15:06+0100\n"
+ "POT-Creation-Date: 2013-05-09 09:51+0100\n"
"PO-Revision-Date: 2013-04-02 19:08-0500\n"
"Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n"
"Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n"
msgid "%"
msgstr "%"
- #: src/wx/config_dialog.cc:61
-#: src/wx/config_dialog.cc:98
msgid "(restart DCP-o-matic to see language changes)"
msgstr ""
msgid "A/B"
msgstr "A/B"
- #: src/wx/config_dialog.cc:143
+ #: src/wx/config_dialog.cc:61
+ msgid "A/B mode"
+ msgstr ""
+
+ #: src/wx/config_dialog.cc:325
msgid "Add"
msgstr "Añadir"
msgid "Calculate..."
msgstr "Calcular..."
- #: src/wx/job_manager_view.cc:88
+ #: src/wx/job_manager_view.cc:97
msgid "Cancel"
msgstr ""
msgid "Create in folder"
msgstr "Crear en carpeta"
+ #: src/wx/config_dialog.cc:244
+ #, fuzzy
+ msgid "Creator"
+ msgstr "Crear en carpeta"
+
#: src/wx/film_editor.cc:1371
#, c-format
msgid "Cropped to %dx%d (%.2f:1)\n"
msgid "DCP Name"
msgstr "Nombre DCP"
-#: src/wx/config_dialog.cc:46
-#, fuzzy
-msgid "DCP-o-matic Preferences"
-msgstr "Preferencias DVD-o-matic"
+#: src/wx/wx_util.cc:61
+msgid "DCP-o-matic"
+msgstr "DCP-o-matic"
-#: src/wx/wx_util.cc:63 src/wx/wx_util.cc:71
-msgid "DVD-o-matic"
-msgstr "DVD-o-matic"
+#: src/wx/config_dialog.cc:44
+msgid "DCP-o-matic Preferences"
+msgstr "Preferencias DCP-o-matic"
#: src/wx/audio_dialog.cc:101
#, fuzzy, c-format
-msgid "DVD-o-matic audio - %s"
-msgstr "Audio DVD-o-matic - %1"
+msgid "DCP-o-matic audio - %s"
+msgstr "Audio DCP-o-matic - %1"
- #: src/wx/config_dialog.cc:102
+ #: src/wx/config_dialog.cc:120
msgid "Default DCI name details"
msgstr "Detalles por defecto del nombre DCI"
- #: src/wx/config_dialog.cc:93
+ #: src/wx/config_dialog.cc:130
+ #, fuzzy
+ msgid "Default content type"
+ msgstr "Tipo de contenido"
+
+ #: src/wx/config_dialog.cc:111
msgid "Default directory for new films"
msgstr "Carpeta por defecto para nuevas películas"
- #: src/wx/film_editor.cc:116 src/wx/job_manager_view.cc:92
+ #: src/wx/config_dialog.cc:125
+ msgid "Default format"
+ msgstr ""
+
+ #: src/wx/film_editor.cc:116 src/wx/job_manager_view.cc:109
msgid "Details..."
msgstr "Detalles..."
msgid "Duration"
msgstr "Duración"
- #: src/wx/config_dialog.cc:145
+ #: src/wx/config_dialog.cc:327
msgid "Edit"
msgstr "Editar"
- #: src/wx/config_dialog.cc:103 src/wx/config_dialog.cc:122
+ #: src/wx/config_dialog.cc:121 src/wx/config_dialog.cc:282
#: src/wx/film_editor.cc:312
msgid "Edit..."
msgstr "Editar..."
- #: src/wx/config_dialog.cc:128
- msgid "Encoding Servers"
+ #: src/wx/config_dialog.cc:55
+ #, fuzzy
+ msgid "Encoding servers"
msgstr "Servidores de codificación"
#: src/wx/film_editor.cc:171
msgid "I want to play this back at fader"
msgstr "Quiero reproducir con el fader a"
- #: src/wx/config_dialog.cc:132
+ #: src/wx/config_dialog.cc:201 src/wx/config_dialog.cc:314
msgid "IP address"
msgstr "Dirección IP"
+ #: src/wx/config_dialog.cc:240
+ msgid "Issuer"
+ msgstr ""
+
#: src/wx/film_editor.cc:339
msgid "JPEG2000 bandwidth"
msgstr "Ancho de banda JPEG2000"
msgid "MBps"
msgstr "MBps"
+ #: src/wx/config_dialog.cc:57
+ msgid "Metadata"
+ msgstr ""
+
+ #: src/wx/config_dialog.cc:53
+ msgid "Miscellaneous"
+ msgstr ""
+
#: src/wx/dir_picker_ctrl.cc:52
msgid "My Documents"
msgstr "Mis documentos"
msgid "Padded with black to %dx%d (%.2f:1)\n"
msgstr ""
+ #: src/wx/config_dialog.cc:213
+ #, fuzzy
+ msgid "Password"
+ msgstr "Clave del TMS"
+
+ #: src/wx/job_manager_view.cc:103 src/wx/job_manager_view.cc:188
+ msgid "Pause"
+ msgstr ""
+
#: src/wx/audio_dialog.cc:60
msgid "Peak"
msgstr "Pico"
msgid "Rating (e.g. 15)"
msgstr "Clasificación (ej. 16)"
- #: src/wx/config_dialog.cc:118
- msgid "Reference filters for A/B"
+ #: src/wx/config_dialog.cc:278
+ #, fuzzy
+ msgid "Reference filters"
msgstr "Filtros de referencia para A/B"
- #: src/wx/config_dialog.cc:107
- msgid "Reference scaler for A/B"
+ #: src/wx/config_dialog.cc:267
+ #, fuzzy
+ msgid "Reference scaler"
msgstr "Escalador de referencia para A/B"
- #: src/wx/config_dialog.cc:147
+ #: src/wx/config_dialog.cc:329
msgid "Remove"
msgstr "Quitar"
+ #: src/wx/job_manager_view.cc:191
+ msgid "Resume"
+ msgstr ""
+
#: src/wx/film_editor.cc:282
msgid "Right crop"
msgstr "Recorte derecha"
- #: src/wx/job_manager_view.cc:108
+ #: src/wx/job_manager_view.cc:126
msgid "Running"
msgstr "Ejecutando"
msgid "Server"
msgstr "Servidor"
- #: src/wx/config_dialog.cc:49
+ #: src/wx/config_dialog.cc:87
msgid "Set language"
msgstr ""
msgid "Subtitles"
msgstr "Subtítulos"
- #: src/wx/config_dialog.cc:68
- msgid "TMS IP address"
- msgstr "Dirección IP del TMS"
-
- #: src/wx/config_dialog.cc:83
- msgid "TMS password"
- msgstr "Clave del TMS"
+ #: src/wx/config_dialog.cc:59
+ #, fuzzy
+ msgid "TMS"
+ msgstr "RMS"
- #: src/wx/config_dialog.cc:73
- msgid "TMS target path"
+ #: src/wx/config_dialog.cc:205
+ #, fuzzy
+ msgid "Target path"
msgstr "Ruta en el TMS"
- #: src/wx/config_dialog.cc:78
- msgid "TMS user name"
- msgstr "Usuario del TMS"
-
#: src/wx/dci_metadata_dialog.cc:41
msgid "Territory (e.g. UK)"
msgstr "Territorio (ej. ES)"
- #: src/wx/config_dialog.cc:136
+ #: src/wx/config_dialog.cc:318
msgid "Threads"
msgstr "Hilos"
msgid "Threads to use"
msgstr "Hilos a utilizar"
- #: src/wx/config_dialog.cc:88
+ #: src/wx/config_dialog.cc:106
msgid "Threads to use for encoding on this host"
msgstr "Hilos a utilizar para la codificación en esta máquina"
msgid "Use external audio"
msgstr "Usar audio externo"
+ #: src/wx/config_dialog.cc:209
+ #, fuzzy
+ msgid "User name"
+ msgstr "Usar el nombre DCI"
+
#: src/wx/film_editor.cc:75
msgid "Video"
msgstr "Vídeo"
msgid "unknown"
msgstr "desconocido"
+ #~ msgid "TMS IP address"
+ #~ msgstr "Dirección IP del TMS"
+
+ #~ msgid "TMS user name"
+ #~ msgstr "Usuario del TMS"
+
#~ msgid "Original Size"
#~ msgstr "Tamaño original"
#
msgid ""
msgstr ""
-"Project-Id-Version: DVD-o-matic FRENCH\n"
+"Project-Id-Version: DCP-o-matic FRENCH\n"
"Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2013-04-22 15:06+0100\n"
- "PO-Revision-Date: 2013-03-20 00:34+0100\n"
- "Last-Translator: FreeDCP.net <freedcp.net@gmail.com>\n"
+ "POT-Creation-Date: 2013-05-09 09:51+0100\n"
+ "PO-Revision-Date: 2013-05-10 14:19+0100\n"
+ "Last-Translator: \n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
msgid "%"
msgstr "%"
- #: src/wx/config_dialog.cc:61
+ #: src/wx/config_dialog.cc:98
msgid "(restart DCP-o-matic to see language changes)"
- msgstr ""
+ msgstr "(redémarrez DCP-o-matic pour voir les changements de langue)"
#: src/wx/film_editor.cc:1276
msgid "1 channel"
msgid "A/B"
msgstr "A/B"
- #: src/wx/config_dialog.cc:143
+ #: src/wx/config_dialog.cc:61
+ msgid "A/B mode"
+ msgstr "A/B mode"
+
+ #: src/wx/config_dialog.cc:325
msgid "Add"
msgstr "Ajouter"
- #: src/wx/audio_dialog.cc:32 src/wx/film_editor.cc:77
+ #: src/wx/audio_dialog.cc:32
+ #: src/wx/film_editor.cc:77
msgid "Audio"
msgstr "Audio"
#: src/wx/film_editor.cc:824
#, c-format
msgid "Audio will be resampled from %dHz to %dHz\n"
- msgstr ""
+ msgstr "L'audio sera rééchantillonné de %dHz à %dHz\n"
#: src/wx/job_wrapper.cc:38
#, c-format
msgid "Calculate..."
msgstr "Calcul..."
- #: src/wx/job_manager_view.cc:88
+ #: src/wx/job_manager_view.cc:97
msgid "Cancel"
msgstr "Annuler"
msgid "Create in folder"
msgstr "Créer dans le dossier"
+ #: src/wx/config_dialog.cc:244
+ msgid "Creator"
+ msgstr "Créateur"
+
#: src/wx/film_editor.cc:1371
#, c-format
msgid "Cropped to %dx%d (%.2f:1)\n"
- msgstr ""
+ msgstr "Découpe de %dx%d (%.2f:1)\n"
#: src/wx/dci_metadata_dialog.cc:28
msgid "DCI name"
msgid "DCP Name"
msgstr "Nom du DCP"
-#: src/wx/config_dialog.cc:46
-msgid "DCP-o-matic Preferences"
-msgstr "Préférences de DCP-o-matic"
+#: src/wx/wx_util.cc:61
+msgid "DCP-o-matic"
+msgstr "DCP-o-matic"
-#: src/wx/wx_util.cc:63
-#: src/wx/wx_util.cc:71
-msgid "DVD-o-matic"
-msgstr "DVD-o-matic"
+#: src/wx/config_dialog.cc:44
+msgid "DCP-o-matic Preferences"
+msgstr "Préférences DCP-o-matic"
#: src/wx/audio_dialog.cc:101
#, c-format
-msgid "DVD-o-matic audio - %s"
-msgstr "Son DVD-o-matic - %s"
+msgid "DCP-o-matic audio - %s"
+msgstr "Son DCP-o-matic - %s"
- #: src/wx/config_dialog.cc:102
+ #: src/wx/config_dialog.cc:120
msgid "Default DCI name details"
msgstr "Détails du nom DCI par défaut"
- #: src/wx/config_dialog.cc:93
+ #: src/wx/config_dialog.cc:130
+ msgid "Default content type"
+ msgstr "Type de contenu par défaut"
+
+ #: src/wx/config_dialog.cc:111
msgid "Default directory for new films"
msgstr "Dossier par défaut des nouveaux films"
- #: src/wx/film_editor.cc:116 src/wx/job_manager_view.cc:92
+ #: src/wx/config_dialog.cc:125
+ msgid "Default format"
+ msgstr "Format par défaut"
+
+ #: src/wx/film_editor.cc:116
+ #: src/wx/job_manager_view.cc:109
msgid "Details..."
msgstr "Détails..."
msgid "Duration"
msgstr "Durée"
- #: src/wx/config_dialog.cc:145
+ #: src/wx/config_dialog.cc:327
msgid "Edit"
msgstr "Édition"
- #: src/wx/config_dialog.cc:103 src/wx/config_dialog.cc:122
+ #: src/wx/config_dialog.cc:121
+ #: src/wx/config_dialog.cc:282
#: src/wx/film_editor.cc:312
msgid "Edit..."
msgstr "Éditer..."
- #: src/wx/config_dialog.cc:128
- msgid "Encoding Servers"
+ #: src/wx/config_dialog.cc:55
+ #, fuzzy
+ msgid "Encoding servers"
msgstr "Serveurs d'encodage"
#: src/wx/film_editor.cc:171
msgid "Film name"
msgstr "Nom du Film"
- #: src/wx/film_editor.cc:307 src/wx/filter_dialog.cc:32
+ #: src/wx/film_editor.cc:307
+ #: src/wx/filter_dialog.cc:32
msgid "Filters"
msgstr "Filtres"
msgid "I want to play this back at fader"
msgstr "Je veux le jouer à ce volume"
- #: src/wx/config_dialog.cc:132
+ #: src/wx/config_dialog.cc:201
+ #: src/wx/config_dialog.cc:314
msgid "IP address"
msgstr "Adresse IP"
+ #: src/wx/config_dialog.cc:240
+ msgid "Issuer"
+ msgstr "Emetteur"
+
#: src/wx/film_editor.cc:339
msgid "JPEG2000 bandwidth"
msgstr "Qualité JPEG2000"
msgid "MBps"
msgstr "MBps"
+ #: src/wx/config_dialog.cc:57
+ msgid "Metadata"
+ msgstr "Métadonnées"
+
+ #: src/wx/config_dialog.cc:53
+ msgid "Miscellaneous"
+ msgstr "Divers"
+
#: src/wx/dir_picker_ctrl.cc:52
msgid "My Documents"
msgstr "Mes Documents"
msgid "New Film"
msgstr "Nouveau Film"
- #: src/wx/film_editor.cc:309 src/wx/film_editor.cc:671
+ #: src/wx/film_editor.cc:309
+ #: src/wx/film_editor.cc:671
msgid "None"
msgstr "Aucun"
#: src/wx/film_editor.cc:1360
#, c-format
msgid "Original video is %dx%d (%.2f:1)\n"
- msgstr ""
+ msgstr "La vidéo originale est %dx%d (%.2f:1)\n"
#: src/wx/dci_metadata_dialog.cc:57
msgid "Package Type (e.g. OV)"
#: src/wx/film_editor.cc:1392
#, c-format
msgid "Padded with black to %dx%d (%.2f:1)\n"
- msgstr ""
+ msgstr "Enveloppe noire de %dx%d (%.2f:1)\n"
+
+ #: src/wx/config_dialog.cc:213
+ msgid "Password"
+ msgstr "Mot de passe"
+
+ #: src/wx/job_manager_view.cc:103
+ #: src/wx/job_manager_view.cc:188
+ msgid "Pause"
+ msgstr "Pause"
#: src/wx/audio_dialog.cc:60
msgid "Peak"
msgid "Rating (e.g. 15)"
msgstr "Rating (ex. 15)"
- #: src/wx/config_dialog.cc:118
- msgid "Reference filters for A/B"
- msgstr "Filtres de référence pour A/B"
+ #: src/wx/config_dialog.cc:278
+ msgid "Reference filters"
+ msgstr "Filtres de référence"
- #: src/wx/config_dialog.cc:107
- msgid "Reference scaler for A/B"
- msgstr "Échelle de référence pour A/B"
+ #: src/wx/config_dialog.cc:267
+ msgid "Reference scaler"
+ msgstr "Échelle de référence"
- #: src/wx/config_dialog.cc:147
+ #: src/wx/config_dialog.cc:329
msgid "Remove"
msgstr "Supprimer"
+ #: src/wx/job_manager_view.cc:191
+ msgid "Resume"
+ msgstr "Reprendre"
+
#: src/wx/film_editor.cc:282
msgid "Right crop"
msgstr "Découpe droite"
- #: src/wx/job_manager_view.cc:108
+ #: src/wx/job_manager_view.cc:126
msgid "Running"
msgstr "Progression"
#: src/wx/film_editor.cc:1384
#, c-format
msgid "Scaled to %dx%d (%.2f:1)\n"
- msgstr ""
+ msgstr "Mis à l'échelle de %dx%d (%.2f:1)\n"
#: src/wx/film_editor.cc:319
msgid "Scaler"
msgid "Server"
msgstr "Serveur"
- #: src/wx/config_dialog.cc:49
+ #: src/wx/config_dialog.cc:87
msgid "Set language"
- msgstr ""
+ msgstr "Selectionnez la langue"
#: src/wx/film_editor.cc:368
msgid "Show Audio..."
msgid "Subtitles"
msgstr "Sous-titres"
- #: src/wx/config_dialog.cc:68
- msgid "TMS IP address"
- msgstr "Adresse IP du TMS"
-
- #: src/wx/config_dialog.cc:83
- msgid "TMS password"
- msgstr "Mot de passe du TMS"
-
- #: src/wx/config_dialog.cc:73
- msgid "TMS target path"
- msgstr "Chemin d'accès du TMS"
+ #: src/wx/config_dialog.cc:59
+ #, fuzzy
+ msgid "TMS"
+ msgstr "RMS"
- #: src/wx/config_dialog.cc:78
- msgid "TMS user name"
- msgstr "Nom d'utilisateur du TMS"
+ #: src/wx/config_dialog.cc:205
+ msgid "Target path"
+ msgstr "Chemin d'accès"
#: src/wx/dci_metadata_dialog.cc:41
msgid "Territory (e.g. UK)"
msgstr "Territoire (ex. FR)"
- #: src/wx/config_dialog.cc:136
+ #: src/wx/config_dialog.cc:318
msgid "Threads"
msgstr "Processus"
msgid "Threads to use"
msgstr "Nombre de processus à utiliser"
- #: src/wx/config_dialog.cc:88
+ #: src/wx/config_dialog.cc:106
msgid "Threads to use for encoding on this host"
msgstr "Nombre de processus à utiliser sur cet hôte"
msgid "Use external audio"
msgstr "Utiliser une source audio externe"
+ #: src/wx/config_dialog.cc:209
+ msgid "User name"
+ msgstr "Nom d'utilisateur"
+
#: src/wx/film_editor.cc:75
msgid "Video"
msgstr "Vidéo"
msgid "encode only the subset"
msgstr "encoder seulement la sélection"
- #: src/wx/film_editor.cc:694 src/wx/film_editor.cc:697
+ #: src/wx/film_editor.cc:694
+ #: src/wx/film_editor.cc:697
msgid "frames"
msgstr "images"
#: src/wx/film_editor.cc:440
msgid "pixels"
- msgstr ""
+ msgstr "pixels"
#. / TRANSLATORS: `s' here is an abbreviation for seconds, the unit of time
#: src/wx/film_editor.cc:197
msgid "s"
msgstr "s"
- #: src/wx/properties_dialog.cc:62 src/wx/properties_dialog.cc:63
+ #: src/wx/properties_dialog.cc:62
+ #: src/wx/properties_dialog.cc:63
msgid "unknown"
msgstr "inconnu"
+ #~ msgid "TMS IP address"
+ #~ msgstr "Adresse IP du TMS"
+
+ #~ msgid "TMS user name"
+ #~ msgstr "Nom d'utilisateur du TMS"
+
#~ msgid "Original Size"
#~ msgstr "Taille Originale"
msgstr ""
"Project-Id-Version: IT VERSION\n"
"Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2013-04-22 15:06+0100\n"
+ "POT-Creation-Date: 2013-05-09 09:51+0100\n"
"PO-Revision-Date: 2013-04-28 10:27+0100\n"
"Last-Translator: Maci <macibro@gmail.com>\n"
"Language-Team: \n"
msgid "%"
msgstr "%"
-#: src/wx/config_dialog.cc:98
-#, fuzzy
+#: src/wx/config_dialog.cc:61
msgid "(restart DCP-o-matic to see language changes)"
-msgstr "(riavviare DVD-o-matic per vedere i cambiamenti di lingua)"
+msgstr "(riavviare DCP-o-matic per vedere i cambiamenti di lingua)"
#: src/wx/film_editor.cc:1276
msgid "1 channel"
msgid "A/B"
msgstr "A/B"
- #: src/wx/config_dialog.cc:143
+ #: src/wx/config_dialog.cc:61
+ msgid "A/B mode"
+ msgstr ""
+
+ #: src/wx/config_dialog.cc:325
msgid "Add"
msgstr "Aggiungi"
msgid "Calculate..."
msgstr "Calcola..."
- #: src/wx/job_manager_view.cc:88
+ #: src/wx/job_manager_view.cc:97
msgid "Cancel"
msgstr "Annulla"
msgid "Create in folder"
msgstr "Crea nella cartella"
+ #: src/wx/config_dialog.cc:244
+ #, fuzzy
+ msgid "Creator"
+ msgstr "Crea nella cartella"
+
#: src/wx/film_editor.cc:1371
#, c-format
msgid "Cropped to %dx%d (%.2f:1)\n"
msgid "DCP Name"
msgstr "Nome del DCP"
-#: src/wx/config_dialog.cc:46
-#, fuzzy
-msgid "DCP-o-matic Preferences"
-msgstr "Preferenze DVD-o-matic"
+#: src/wx/wx_util.cc:61
+msgid "DCP-o-matic"
+msgstr "DCP-o-matic"
-#: src/wx/wx_util.cc:63 src/wx/wx_util.cc:71
-msgid "DVD-o-matic"
-msgstr "DVD-o-matic"
+#: src/wx/config_dialog.cc:44
+msgid "DCP-o-matic Preferences"
+msgstr "Preferenze DCP-o-matic"
#: src/wx/audio_dialog.cc:101
#, c-format
-msgid "DVD-o-matic audio - %s"
-msgstr "Audio DVD-o-matic - %s"
+msgid "DCP-o-matic audio - %s"
+msgstr "Audio DCP-o-matic - %s"
- #: src/wx/config_dialog.cc:102
+ #: src/wx/config_dialog.cc:120
msgid "Default DCI name details"
msgstr "Dettagli del nome di default DCI"
- #: src/wx/config_dialog.cc:93
+ #: src/wx/config_dialog.cc:130
+ #, fuzzy
+ msgid "Default content type"
+ msgstr "Tipo di contenuto"
+
+ #: src/wx/config_dialog.cc:111
msgid "Default directory for new films"
msgstr "Directory di default per i nuovi films"
- #: src/wx/film_editor.cc:116 src/wx/job_manager_view.cc:92
+ #: src/wx/config_dialog.cc:125
+ msgid "Default format"
+ msgstr ""
+
+ #: src/wx/film_editor.cc:116 src/wx/job_manager_view.cc:109
msgid "Details..."
msgstr "Dettagli"
msgid "Duration"
msgstr "Durata"
- #: src/wx/config_dialog.cc:145
+ #: src/wx/config_dialog.cc:327
msgid "Edit"
msgstr "Modifica"
- #: src/wx/config_dialog.cc:103 src/wx/config_dialog.cc:122
+ #: src/wx/config_dialog.cc:121 src/wx/config_dialog.cc:282
#: src/wx/film_editor.cc:312
msgid "Edit..."
msgstr "Modifica..."
- #: src/wx/config_dialog.cc:128
- msgid "Encoding Servers"
+ #: src/wx/config_dialog.cc:55
+ #, fuzzy
+ msgid "Encoding servers"
msgstr "Servers di codifica"
#: src/wx/film_editor.cc:171
msgid "I want to play this back at fader"
msgstr "Sto usando il fader a"
- #: src/wx/config_dialog.cc:132
+ #: src/wx/config_dialog.cc:201 src/wx/config_dialog.cc:314
msgid "IP address"
msgstr "Indirizzo IP"
+ #: src/wx/config_dialog.cc:240
+ msgid "Issuer"
+ msgstr ""
+
#: src/wx/film_editor.cc:339
msgid "JPEG2000 bandwidth"
msgstr "Banda passante JPEG2000"
msgid "MBps"
msgstr "MBps"
+ #: src/wx/config_dialog.cc:57
+ msgid "Metadata"
+ msgstr ""
+
+ #: src/wx/config_dialog.cc:53
+ msgid "Miscellaneous"
+ msgstr ""
+
#: src/wx/dir_picker_ctrl.cc:52
msgid "My Documents"
msgstr "Documenti"
msgid "Padded with black to %dx%d (%.2f:1)\n"
msgstr "Riempito con nero a %dx%d (%.2f:1)\n"
+ #: src/wx/config_dialog.cc:213
+ #, fuzzy
+ msgid "Password"
+ msgstr "Password del TMS"
+
+ #: src/wx/job_manager_view.cc:103 src/wx/job_manager_view.cc:188
+ msgid "Pause"
+ msgstr ""
+
#: src/wx/audio_dialog.cc:60
msgid "Peak"
msgstr "Picco"
msgid "Rating (e.g. 15)"
msgstr "Classificazione (es. 15)"
- #: src/wx/config_dialog.cc:118
- msgid "Reference filters for A/B"
+ #: src/wx/config_dialog.cc:278
+ #, fuzzy
+ msgid "Reference filters"
msgstr "Filtri di riferimento A/B"
- #: src/wx/config_dialog.cc:107
- msgid "Reference scaler for A/B"
+ #: src/wx/config_dialog.cc:267
+ #, fuzzy
+ msgid "Reference scaler"
msgstr "Scalatura di riferimento A/B"
- #: src/wx/config_dialog.cc:147
+ #: src/wx/config_dialog.cc:329
msgid "Remove"
msgstr "Rimuovi"
+ #: src/wx/job_manager_view.cc:191
+ msgid "Resume"
+ msgstr ""
+
#: src/wx/film_editor.cc:282
msgid "Right crop"
msgstr "Taglio a destra"
- #: src/wx/job_manager_view.cc:108
+ #: src/wx/job_manager_view.cc:126
msgid "Running"
msgstr "In corso"
msgid "Server"
msgstr "Server"
- #: src/wx/config_dialog.cc:49
+ #: src/wx/config_dialog.cc:87
msgid "Set language"
msgstr "Seleziona la lingua"
msgid "Subtitles"
msgstr "Sottotitoli"
- #: src/wx/config_dialog.cc:68
- msgid "TMS IP address"
- msgstr "Indirizzo IP del TMS"
-
- #: src/wx/config_dialog.cc:83
- msgid "TMS password"
- msgstr "Password del TMS"
+ #: src/wx/config_dialog.cc:59
+ #, fuzzy
+ msgid "TMS"
+ msgstr "RMS"
- #: src/wx/config_dialog.cc:73
- msgid "TMS target path"
+ #: src/wx/config_dialog.cc:205
+ #, fuzzy
+ msgid "Target path"
msgstr "Percorso di destinazione del TMS"
- #: src/wx/config_dialog.cc:78
- msgid "TMS user name"
- msgstr "Nome utente del TMS"
-
#: src/wx/dci_metadata_dialog.cc:41
msgid "Territory (e.g. UK)"
msgstr "Nazione (es. UK)"
- #: src/wx/config_dialog.cc:136
+ #: src/wx/config_dialog.cc:318
msgid "Threads"
msgstr "Threads"
msgid "Threads to use"
msgstr "Threads da usare"
- #: src/wx/config_dialog.cc:88
+ #: src/wx/config_dialog.cc:106
msgid "Threads to use for encoding on this host"
msgstr "Threads da usare per codificare su questo host"
msgid "Use external audio"
msgstr "Usa l'audio esterno"
+ #: src/wx/config_dialog.cc:209
+ #, fuzzy
+ msgid "User name"
+ msgstr "Usa nome DCI"
+
#: src/wx/film_editor.cc:75
msgid "Video"
msgstr "Video"
msgid "unknown"
msgstr "sconosciuto"
+ #~ msgid "TMS IP address"
+ #~ msgstr "Indirizzo IP del TMS"
+
+ #~ msgid "TMS user name"
+ #~ msgstr "Nome utente del TMS"
+
#~ msgid "Original Size"
#~ msgstr "Dimensione Originale"
#
msgid ""
msgstr ""
-"Project-Id-Version: DVD-o-matic\n"
+"Project-Id-Version: DCP-o-matic\n"
"Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2013-04-22 15:06+0100\n"
+ "POT-Creation-Date: 2013-05-09 09:51+0100\n"
"PO-Revision-Date: 2013-04-09 10:13+0100\n"
"Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
"Language-Team: \n"
msgid "%"
msgstr "%"
-#: src/wx/config_dialog.cc:98
-#, fuzzy
+#: src/wx/config_dialog.cc:61
msgid "(restart DCP-o-matic to see language changes)"
-msgstr "(starta om DVD-o-matic för att se språkändringar)"
+msgstr "(starta om DCP-o-matic för att se språkändringar)"
#: src/wx/film_editor.cc:1276
msgid "1 channel"
msgid "A/B"
msgstr "A/B"
- #: src/wx/config_dialog.cc:143
+ #: src/wx/config_dialog.cc:61
+ msgid "A/B mode"
+ msgstr ""
+
+ #: src/wx/config_dialog.cc:325
msgid "Add"
msgstr "Lägg till"
msgid "Calculate..."
msgstr "Beräkna..."
- #: src/wx/job_manager_view.cc:88
+ #: src/wx/job_manager_view.cc:97
msgid "Cancel"
msgstr "Avbryt"
msgid "Create in folder"
msgstr "Skapa i katalog"
+ #: src/wx/config_dialog.cc:244
+ #, fuzzy
+ msgid "Creator"
+ msgstr "Skapa i katalog"
+
#: src/wx/film_editor.cc:1371
#, c-format
msgid "Cropped to %dx%d (%.2f:1)\n"
msgid "DCP Name"
msgstr "DCP Namn"
-#: src/wx/config_dialog.cc:46
-#, fuzzy
-msgid "DCP-o-matic Preferences"
-msgstr "DVD-o-matic Inställningar"
+#: src/wx/wx_util.cc:61
+msgid "DCP-o-matic"
+msgstr "DCP-o-matic"
-#: src/wx/wx_util.cc:63 src/wx/wx_util.cc:71
-msgid "DVD-o-matic"
-msgstr "DVD-o-matic"
+#: src/wx/config_dialog.cc:44
+msgid "DCP-o-matic Preferences"
+msgstr "DCP-o-matic Inställningar"
#: src/wx/audio_dialog.cc:101
#, c-format
-msgid "DVD-o-matic audio - %s"
-msgstr "DVD-o-matic audio - %s"
+msgid "DCP-o-matic audio - %s"
+msgstr "DCP-o-matic audio - %s"
- #: src/wx/config_dialog.cc:102
+ #: src/wx/config_dialog.cc:120
msgid "Default DCI name details"
msgstr "Detaljer om förvalda DCI-namn"
- #: src/wx/config_dialog.cc:93
+ #: src/wx/config_dialog.cc:130
+ #, fuzzy
+ msgid "Default content type"
+ msgstr "Innehållstyp"
+
+ #: src/wx/config_dialog.cc:111
msgid "Default directory for new films"
msgstr "Förvald katalog för nya filmer"
- #: src/wx/film_editor.cc:116 src/wx/job_manager_view.cc:92
+ #: src/wx/config_dialog.cc:125
+ msgid "Default format"
+ msgstr ""
+
+ #: src/wx/film_editor.cc:116 src/wx/job_manager_view.cc:109
msgid "Details..."
msgstr "Detaljer..."
msgid "Duration"
msgstr "Längd"
- #: src/wx/config_dialog.cc:145
+ #: src/wx/config_dialog.cc:327
msgid "Edit"
msgstr "Redigera"
- #: src/wx/config_dialog.cc:103 src/wx/config_dialog.cc:122
+ #: src/wx/config_dialog.cc:121 src/wx/config_dialog.cc:282
#: src/wx/film_editor.cc:312
msgid "Edit..."
msgstr "Redigera..."
- #: src/wx/config_dialog.cc:128
- msgid "Encoding Servers"
+ #: src/wx/config_dialog.cc:55
+ #, fuzzy
+ msgid "Encoding servers"
msgstr "Kodningsservrar"
#: src/wx/film_editor.cc:171
msgid "I want to play this back at fader"
msgstr "Jag vill spela upp detta med mixervolym"
- #: src/wx/config_dialog.cc:132
+ #: src/wx/config_dialog.cc:201 src/wx/config_dialog.cc:314
msgid "IP address"
msgstr "IP-adress"
+ #: src/wx/config_dialog.cc:240
+ msgid "Issuer"
+ msgstr ""
+
#: src/wx/film_editor.cc:339
msgid "JPEG2000 bandwidth"
msgstr "JPEG2000 bandbredd"
msgid "MBps"
msgstr "MBps"
+ #: src/wx/config_dialog.cc:57
+ msgid "Metadata"
+ msgstr ""
+
+ #: src/wx/config_dialog.cc:53
+ msgid "Miscellaneous"
+ msgstr ""
+
#: src/wx/dir_picker_ctrl.cc:52
msgid "My Documents"
msgstr "Mina Dokument"
msgid "Padded with black to %dx%d (%.2f:1)\n"
msgstr "Svarta kanter tillagda för %dx%d (%.2f:1)\n"
+ #: src/wx/config_dialog.cc:213
+ #, fuzzy
+ msgid "Password"
+ msgstr "TMS lösenord"
+
+ #: src/wx/job_manager_view.cc:103 src/wx/job_manager_view.cc:188
+ msgid "Pause"
+ msgstr ""
+
#: src/wx/audio_dialog.cc:60
msgid "Peak"
msgstr "Topp"
msgid "Rating (e.g. 15)"
msgstr "Klassificering (ex. 15)"
- #: src/wx/config_dialog.cc:118
- msgid "Reference filters for A/B"
+ #: src/wx/config_dialog.cc:278
+ #, fuzzy
+ msgid "Reference filters"
msgstr "Referensfilter för A/B"
- #: src/wx/config_dialog.cc:107
- msgid "Reference scaler for A/B"
+ #: src/wx/config_dialog.cc:267
+ #, fuzzy
+ msgid "Reference scaler"
msgstr "Referensomskalare för A/B"
- #: src/wx/config_dialog.cc:147
+ #: src/wx/config_dialog.cc:329
msgid "Remove"
msgstr "Ta bort"
+ #: src/wx/job_manager_view.cc:191
+ msgid "Resume"
+ msgstr ""
+
#: src/wx/film_editor.cc:282
msgid "Right crop"
msgstr "Höger beskärning"
- #: src/wx/job_manager_view.cc:108
+ #: src/wx/job_manager_view.cc:126
msgid "Running"
msgstr "Körs"
msgid "Server"
msgstr "Server"
- #: src/wx/config_dialog.cc:49
+ #: src/wx/config_dialog.cc:87
msgid "Set language"
msgstr "Välj språk"
msgid "Subtitles"
msgstr "Undertexter"
- #: src/wx/config_dialog.cc:68
- msgid "TMS IP address"
- msgstr "TMS IP-adress"
-
- #: src/wx/config_dialog.cc:83
- msgid "TMS password"
- msgstr "TMS lösenord"
+ #: src/wx/config_dialog.cc:59
+ #, fuzzy
+ msgid "TMS"
+ msgstr "RMS"
- #: src/wx/config_dialog.cc:73
- msgid "TMS target path"
+ #: src/wx/config_dialog.cc:205
+ #, fuzzy
+ msgid "Target path"
msgstr "TMS målsökväg"
- #: src/wx/config_dialog.cc:78
- msgid "TMS user name"
- msgstr "TMS användarnamn"
-
#: src/wx/dci_metadata_dialog.cc:41
msgid "Territory (e.g. UK)"
msgstr "Område (ex. SV)"
- #: src/wx/config_dialog.cc:136
+ #: src/wx/config_dialog.cc:318
msgid "Threads"
msgstr "Trådar"
msgid "Threads to use"
msgstr "Antal trådar att använda"
- #: src/wx/config_dialog.cc:88
+ #: src/wx/config_dialog.cc:106
msgid "Threads to use for encoding on this host"
msgstr "Antal trådar att använda vid kodning på denna maskin"
msgid "Use external audio"
msgstr "Använd extern audio"
+ #: src/wx/config_dialog.cc:209
+ #, fuzzy
+ msgid "User name"
+ msgstr "Använd DCI-namnet"
+
#: src/wx/film_editor.cc:75
msgid "Video"
msgstr "Video"
msgid "unknown"
msgstr "okänt"
+ #~ msgid "TMS IP address"
+ #~ msgstr "TMS IP-adress"
+
+ #~ msgid "TMS user name"
+ #~ msgstr "TMS användarnamn"
+
#~ msgid "Original Size"
#~ msgstr "Ursprunglig Storlek"
import os
import sys
-APPNAME = 'dvdomatic'
-VERSION = '0.93pre'
+APPNAME = 'dcpomatic'
+VERSION = '1.00pre'
def options(opt):
opt.load('compiler_cxx')
if conf.options.target_windows:
conf.load('winres')
- conf.env.append_value('CXXFLAGS', ['-D__STDC_CONSTANT_MACROS', '-msse', '-mfpmath=sse', '-ffast-math', '-fno-strict-aliasing',
+ conf.env.append_value('CXXFLAGS', ['-D__STDC_CONSTANT_MACROS', '-D__STDC_LIMIT_MACROS', '-msse', '-mfpmath=sse', '-ffast-math', '-fno-strict-aliasing',
'-Wall', '-Wno-attributes', '-Wextra'])
if conf.options.target_windows:
- conf.env.append_value('CXXFLAGS', ['-DDVDOMATIC_WINDOWS', '-DWIN32_LEAN_AND_MEAN', '-DBOOST_USE_WINDOWS_H', '-DUNICODE'])
+ conf.env.append_value('CXXFLAGS', ['-DDCPOMATIC_WINDOWS', '-DWIN32_LEAN_AND_MEAN', '-DBOOST_USE_WINDOWS_H', '-DUNICODE'])
wxrc = os.popen('wx-config --rescomp').read().split()[1:]
conf.env.append_value('WINRCFLAGS', wxrc)
if conf.options.enable_debug:
conf.env.append_value('CXXFLAGS', ['-mconsole'])
conf.env.append_value('LINKFLAGS', ['-mconsole'])
conf.check(lib = 'ws2_32', uselib_store = 'WINSOCK2', msg = "Checking for library winsock2")
+ conf.check(lib = 'bfd', uselib_store = 'BFD', msg = "Checking for library bfd")
+ conf.check(lib = 'dbghelp', uselib_store = 'DBGHELP', msg = "Checking for library dbghelp")
+ conf.check(lib = 'iberty', uselib_store = 'IBERTY', msg = "Checking for library iberty")
boost_lib_suffix = '-mt'
boost_thread = 'boost_thread_win32-mt'
else:
- conf.env.append_value('CXXFLAGS', '-DDVDOMATIC_POSIX')
+ conf.env.append_value('CXXFLAGS', '-DDCPOMATIC_POSIX')
conf.env.append_value('CXXFLAGS', '-DPOSIX_LOCALE_PREFIX="%s/share/locale"' % conf.env['PREFIX'])
- conf.env.append_value('CXXFLAGS', '-DPOSIX_ICON_PREFIX="%s/share/dvdomatic"' % conf.env['PREFIX'])
+ conf.env.append_value('CXXFLAGS', '-DPOSIX_ICON_PREFIX="%s/share/dcpomatic"' % conf.env['PREFIX'])
boost_lib_suffix = ''
boost_thread = 'boost_thread'
conf.env.append_value('LINKFLAGS', '-pthread')
conf.env.VERSION = VERSION
if conf.options.enable_debug:
- conf.env.append_value('CXXFLAGS', ['-g', '-DDVDOMATIC_DEBUG'])
+ conf.env.append_value('CXXFLAGS', ['-g', '-DDCPOMATIC_DEBUG'])
else:
conf.env.append_value('CXXFLAGS', '-O2')
if not conf.options.static:
conf.check_cfg(package = 'libdcp', atleast_version = '0.49', args = '--cflags --libs', uselib_store = 'DCP', mandatory = True)
+ conf.check_cfg(package = 'libcxml', atleast_version = '0.01', args = '--cflags --libs', uselib_store = 'CXML', mandatory = True)
conf.check_cfg(package = 'libavformat', args = '--cflags --libs', uselib_store = 'AVFORMAT', mandatory = True)
conf.check_cfg(package = 'libavfilter', args = '--cflags --libs', uselib_store = 'AVFILTER', mandatory = True)
conf.check_cfg(package = 'libavcodec', args = '--cflags --libs', uselib_store = 'AVCODEC', mandatory = True)
conf.check_cfg(package = 'libavutil', args = '--cflags --libs', uselib_store = 'AVUTIL', mandatory = True)
conf.check_cfg(package = 'libswscale', args = '--cflags --libs', uselib_store = 'SWSCALE', mandatory = True)
- conf.check_cfg(package = 'libswresample', args = '--cflags --libs', uselib_store = 'SWRESAMPLE', mandatory = False)
+ conf.check_cfg(package = 'libswresample', args = '--cflags --libs', uselib_store = 'SWRESAMPLE', mandatory = True)
conf.check_cfg(package = 'libpostproc', args = '--cflags --libs', uselib_store = 'POSTPROC', mandatory = True)
else:
# This is hackio grotesquio for static builds (ie for .deb packages). We need to link some things
conf.env.HAVE_DCP = 1
conf.env.STLIB_DCP = ['dcp', 'asdcp-libdcp', 'kumu-libdcp']
conf.env.LIB_DCP = ['glibmm-2.4', 'xml++-2.6', 'ssl', 'crypto', 'bz2']
+ conf.env.HAVE_CXML = 1
+ conf.env.STLIB_CXML = ['cxml']
+ conf.check_cfg(package = 'libxml++-2.6', args = '--cflags --libs', uselib_store = 'XML++', mandatory = True)
conf.env.HAVE_AVFORMAT = 1
conf.env.STLIB_AVFORMAT = ['avformat']
conf.env.HAVE_AVFILTER = 1
conf.env.STLIB_AVUTIL = ['avutil']
conf.env.HAVE_SWSCALE = 1
conf.env.STLIB_SWSCALE = ['swscale']
- conf.env.HAVE_SWRESAMPLE = 1
- conf.env.STLIB_SWRESAMPLE = ['swresample']
conf.env.HAVE_POSTPROC = 1
conf.env.STLIB_POSTPROC = ['postproc']
-
- # This doesn't seem to be set up, and we need it otherwise resampling support
- # won't be included. Hack upon a hack, obviously
- conf.env.append_value('CXXFLAGS', ['-DHAVE_SWRESAMPLE=1'])
+ conf.env.HAVE_SWRESAMPLE = 1
+ conv.env.STLIB_SWRESAMPLE = ['swresample']
conf.check_cfg(package = 'sndfile', args = '--cflags --libs', uselib_store = 'SNDFILE', mandatory = True)
conf.check_cfg(package = 'glib-2.0', args = '--cflags --libs', uselib_store = 'GLIB', mandatory = True)
d = { 'PREFIX' : '${PREFIX' }
obj = bld(features = 'subst')
- obj.source = 'dvdomatic.desktop.in'
- obj.target = 'dvdomatic.desktop'
+ obj.source = 'dcpomatic.desktop.in'
+ obj.target = 'dcpomatic.desktop'
obj.dict = d
obj = bld(features = 'subst')
- obj.source = 'dvdomatic_batch.desktop.in'
- obj.target = 'dvdomatic_batch.desktop'
+ obj.source = 'dcpomatic_batch.desktop.in'
+ obj.target = 'dcpomatic_batch.desktop'
obj.dict = d
- bld.install_files('${PREFIX}/share/applications', ['dvdomatic.desktop', 'dvdomatic_batch.desktop'])
+ bld.install_files('${PREFIX}/share/applications', ['dcpomatic.desktop', 'dcpomatic_batch.desktop'])
+
for r in ['22x22', '32x32', '48x48', '64x64', '128x128']:
- bld.install_files('${PREFIX}/share/icons/hicolor/%s/apps' % r, 'icons/%s/dvdomatic.png' % r)
+ bld.install_files('${PREFIX}/share/icons/hicolor/%s/apps' % r, 'icons/%s/dcpomatic.png' % r)
if not bld.env.TARGET_WINDOWS:
- bld.install_files('${PREFIX}/share/dvdomatic', 'icons/taskbar_icon.png')
+ bld.install_files('${PREFIX}/share/dcpomatic', 'icons/taskbar_icon.png')
bld.add_post_fun(post)
try:
text = '#include "version.h"\n'
- text += 'char const * dvdomatic_git_commit = \"%s\";\n' % commit
- text += 'char const * dvdomatic_version = \"%s\";\n' % version
+ text += 'char const * dcpomatic_git_commit = \"%s\";\n' % commit
+ text += 'char const * dcpomatic_version = \"%s\";\n' % version
print('Writing version information to src/lib/version.cc')
o = open('src/lib/version.cc', 'w')
o.write(text)