summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-04-15 18:46:34 +0100
committerCarl Hetherington <cth@carlh.net>2013-04-15 18:46:34 +0100
commit9c0a99398dac9cd46b7eb2ca50c0182987954f78 (patch)
treed00f712f50a35540014c85300abe477fc704a690 /src/lib
parent09a0fa8b6b9af3a333ee1918ee711ccc0f75c781 (diff)
parent606b3f759238aa6c0d12de064b301bf36b428220 (diff)
Merge branch 'master' into debug-i18n
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/film.cc58
-rw-r--r--src/lib/film.h21
-rw-r--r--src/lib/po/sv_SE.po8
-rw-r--r--src/lib/writer.cc18
4 files changed, 87 insertions, 18 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc
index bd11c1eb5..a42b874e8 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -93,6 +93,7 @@ Film::Film (string d, bool must_exist)
, _scaler (Scaler::from_id ("bicubic"))
, _trim_start (0)
, _trim_end (0)
+ , _trim_type (CPL)
, _dcp_ab (false)
, _use_content_audio (true)
, _audio_gain (0)
@@ -163,6 +164,7 @@ Film::Film (Film const & o)
, _scaler (o._scaler)
, _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)
@@ -232,19 +234,47 @@ Film::info_dir () const
}
string
-Film::video_mxf_dir () const
+Film::internal_video_mxf_dir () const
{
boost::filesystem::path p;
return dir ("video");
}
string
-Film::video_mxf_filename () const
+Film::internal_video_mxf_filename () const
{
return video_state_identifier() + ".mxf";
}
string
+Film::dcp_video_mxf_filename () const
+{
+ return filename_safe_name() + "_video.mxf";
+}
+
+string
+Film::dcp_audio_mxf_filename () const
+{
+ return filename_safe_name() + "_audio.mxf";
+}
+
+string
+Film::filename_safe_name () const
+{
+ string const n = name ();
+ string o;
+ for (size_t i = 0; i < n.length(); ++i) {
+ if (isalnum (n[i])) {
+ o += n[i];
+ } else {
+ o += "_";
+ }
+ }
+
+ return o;
+}
+
+string
Film::audio_analysis_path () const
{
boost::filesystem::path p;
@@ -428,6 +458,14 @@ Film::write_metadata () const
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";
+ 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;
@@ -541,6 +579,12 @@ Film::read_metadata ()
_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")) {
@@ -1097,6 +1141,16 @@ Film::set_trim_end (int t)
}
void
+Film::set_trim_type (TrimType t)
+{
+ {
+ boost::mutex::scoped_lock lm (_state_mutex);
+ _trim_type = t;
+ }
+ signal_changed (TRIM_TYPE);
+}
+
+void
Film::set_dcp_ab (bool a)
{
{
diff --git a/src/lib/film.h b/src/lib/film.h
index adc4b0eec..dd0a83d94 100644
--- a/src/lib/film.h
+++ b/src/lib/film.h
@@ -64,10 +64,13 @@ public:
std::string info_dir () const;
std::string j2c_path (int f, bool t) const;
std::string info_path (int f) const;
- std::string video_mxf_dir () const;
- std::string video_mxf_filename () const;
+ std::string internal_video_mxf_dir () const;
+ std::string internal_video_mxf_filename () const;
std::string audio_analysis_path () const;
+ std::string dcp_video_mxf_filename () const;
+ std::string dcp_audio_mxf_filename () const;
+
void examine_content ();
void analyse_audio ();
void send_dcp_to_tms ();
@@ -109,6 +112,11 @@ public:
bool have_dcp () const;
+ enum TrimType {
+ CPL,
+ ENCODE
+ };
+
/** Identifiers for the parts of our state;
used for signalling changes.
*/
@@ -125,6 +133,7 @@ public:
SCALER,
TRIM_START,
TRIM_END,
+ TRIM_TYPE,
DCP_AB,
CONTENT_AUDIO_STREAM,
EXTERNAL_AUDIO,
@@ -210,6 +219,11 @@ public:
return _trim_end;
}
+ TrimType trim_type () const {
+ boost::mutex::scoped_lock lm (_state_mutex);
+ return _trim_type;
+ }
+
bool dcp_ab () const {
boost::mutex::scoped_lock lm (_state_mutex);
return _dcp_ab;
@@ -342,6 +356,7 @@ public:
void set_scaler (Scaler const *);
void set_trim_start (int);
void set_trim_end (int);
+ void set_trim_type (TrimType);
void set_dcp_ab (bool);
void set_content_audio_stream (boost::shared_ptr<AudioStream>);
void set_external_audio (std::vector<std::string>);
@@ -387,6 +402,7 @@ private:
void examine_content_finished ();
void analyse_audio_finished ();
std::string video_state_identifier () const;
+ std::string filename_safe_name () const;
/** Complete path to directory containing the film metadata;
* must not be relative.
@@ -422,6 +438,7 @@ private:
int _trim_start;
/** Frames to trim off the end of the DCP */
int _trim_end;
+ TrimType _trim_type;
/** true to create an A/B comparison DCP, where the left half of the image
is the video without any filters or post-processing, and the right half
has the specified filters and post-processing.
diff --git a/src/lib/po/sv_SE.po b/src/lib/po/sv_SE.po
index d574261c8..ef8109dfa 100644
--- a/src/lib/po/sv_SE.po
+++ b/src/lib/po/sv_SE.po
@@ -8,10 +8,9 @@ msgstr ""
"Project-Id-Version: DVD-o-matic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-04-09 11:14+0100\n"
-"PO-Revision-Date: 2013-04-09 10:13+0100\n"
+"PO-Revision-Date: 2013-04-10 15:35+0100\n"
"Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
"Language-Team: \n"
-"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -50,9 +49,8 @@ msgid "16:9 within Flat"
msgstr "16:9 innanför Flat"
#: src/lib/format.cc:115
-#, fuzzy
msgid "16:9 within Scope"
-msgstr "16:9 innanför Flat"
+msgstr "16:9 innanför Scope"
#: src/lib/filter.cc:88
msgid "3D denoiser"
@@ -76,7 +74,7 @@ msgstr "Reklam"
#: src/lib/job.cc:72
msgid "An error occurred whilst handling the file %1."
-msgstr "Ett fel inträffade vid hantering av filen (%1)"
+msgstr "Ett fel inträffade vid hantering av filen %1"
#: src/lib/analyse_audio_job.cc:49
msgid "Analyse audio of %1"
diff --git a/src/lib/writer.cc b/src/lib/writer.cc
index 2d7ee9ba3..c6ce4711d 100644
--- a/src/lib/writer.cc
+++ b/src/lib/writer.cc
@@ -65,8 +65,8 @@ Writer::Writer (shared_ptr<Film> f)
_picture_asset.reset (
new libdcp::MonoPictureAsset (
- _film->video_mxf_dir (),
- _film->video_mxf_filename (),
+ _film->internal_video_mxf_dir (),
+ _film->internal_video_mxf_filename (),
_film->dcp_frame_rate (),
_film->format()->dcp_size ()
)
@@ -80,7 +80,7 @@ Writer::Writer (shared_ptr<Film> f)
_sound_asset.reset (
new libdcp::SoundAsset (
_film->dir (_film->dcp_name()),
- N_("audio.mxf"),
+ _film->dcp_audio_mxf_filename (),
_film->dcp_frame_rate (),
m.dcp_channels (),
dcp_audio_sample_rate (_film->audio_stream()->sample_rate())
@@ -267,12 +267,12 @@ Writer::finish ()
/* Hard-link the video MXF into the DCP */
boost::filesystem::path from;
- from /= _film->video_mxf_dir();
- from /= _film->video_mxf_filename();
+ from /= _film->internal_video_mxf_dir();
+ from /= _film->internal_video_mxf_filename();
boost::filesystem::path to;
to /= _film->dir (_film->dcp_name());
- to /= N_("video.mxf");
+ to /= _film->dcp_video_mxf_filename ();
boost::system::error_code ec;
boost::filesystem::create_hard_link (from, to, ec);
@@ -285,7 +285,7 @@ Writer::finish ()
/* And update the asset */
_picture_asset->set_directory (_film->dir (_film->dcp_name ()));
- _picture_asset->set_file_name (N_("video.mxf"));
+ _picture_asset->set_file_name (_film->dcp_video_mxf_filename ());
if (_sound_asset) {
_sound_asset->set_entry_point (_film->trim_start ());
@@ -339,8 +339,8 @@ Writer::check_existing_picture_mxf ()
{
/* Try to open the existing MXF */
boost::filesystem::path p;
- p /= _film->video_mxf_dir ();
- p /= _film->video_mxf_filename ();
+ p /= _film->internal_video_mxf_dir ();
+ p /= _film->internal_video_mxf_filename ();
FILE* mxf = fopen (p.string().c_str(), N_("rb"));
if (!mxf) {
return;