summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-05-04 15:59:31 +0100
committerCarl Hetherington <cth@carlh.net>2013-05-04 15:59:31 +0100
commitcd4a82d90677cec80e891ac190000cb70767446f (patch)
tree835776cf87239fb13b2da994c2d4285b03d0bea0 /src/lib
parent2cc2dc2aeaec62a4983991170fc5368e10d21748 (diff)
parent1738f2e7336734190bed7e94ce3d691d4a9c9e4c (diff)
Merge master.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/config.cc36
-rw-r--r--src/lib/config.h30
-rw-r--r--src/lib/film.cc4
-rw-r--r--src/lib/format.cc17
-rw-r--r--src/lib/format.h3
-rw-r--r--src/lib/writer.cc6
6 files changed, 73 insertions, 23 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc
index 4f90581f6..b6f464717 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -27,6 +27,8 @@
#include "server.h"
#include "scaler.h"
#include "filter.h"
+#include "format.h"
+#include "dcp_content_type.h"
#include "sound_processor.h"
#include "i18n.h"
@@ -50,6 +52,8 @@ Config::Config ()
, _tms_path (N_("."))
, _sound_processor (SoundProcessor::from_id (N_("dolby_cp750")))
, _default_still_length (10)
+ , _default_format (0)
+ , _default_dcp_content_type (0)
{
_allowed_dcp_frame_rates.push_back (24);
_allowed_dcp_frame_rates.push_back (25);
@@ -95,6 +99,20 @@ Config::Config ()
}
_language = f.optional_string_child ("Language");
+
+ c = f.optional_string_child ("DefaultFormat");
+ if (c) {
+ _default_format = Format::from_id (c.get ());
+ }
+
+ c = f.optional_string_child ("DefaultDCPContentType");
+ if (c) {
+ _default_dcp_content_type = DCPContentType::from_dci_name (c.get ());
+ }
+
+ _dcp_metadata.issuer = f.optional_string_child ("DCPMetadataIssuer").get_value_or ("");
+ _dcp_metadata.creator = f.optional_string_child ("DCPMetadataCreator").get_value_or ("");
+
_default_dci_metadata = DCIMetadata (f.node_child ("DCIMetadata"));
_default_still_length = f.optional_number_child<int>("DefaultStillLength").get_value_or (10);
}
@@ -145,6 +163,16 @@ Config::read_old_metadata ()
_sound_processor = SoundProcessor::from_id (v);
} else if (k == "language") {
_language = v;
+ } else if (k == "default_format") {
+ _default_format = Format::from_id (v);
+ } else if (k == "default_dcp_content_type") {
+ _default_dcp_content_type = DCPContentType::from_dci_name (v);
+ } else if (k == "dcp_metadata_issuer") {
+ _dcp_metadata.issuer = v;
+ } else if (k == "dcp_metadata_creator") {
+ _dcp_metadata.creator = v;
+ } else if (k == "dcp_metadata_issue_date") {
+ _dcp_metadata.issue_date = v;
}
_default_dci_metadata.read_old_metadata (k, v);
@@ -208,6 +236,14 @@ Config::write () const
if (_language) {
root->add_child("Language")->add_child_text (_language.get());
}
+ if (_default_format) {
+ root->add_child("DefaultFormat")->add_child_text (_default_format->id ());
+ }
+ if (_default_dcp_content_type) {
+ root->add_child("DefaultDCPContentType")->add_child_text (_default_dcp_content_type->dci_name ());
+ }
+ root->add_child("DCPMetadataIssuer")->add_child_text (_dcp_metadata.issuer);
+ root->add_child("DCPMetadataCreator")->add_child_text (_dcp_metadata.creator);
_default_dci_metadata.as_xml (root->add_child ("DCIMetadata"));
diff --git a/src/lib/config.h b/src/lib/config.h
index 91926750b..05005e590 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -27,12 +27,15 @@
#include <vector>
#include <boost/shared_ptr.hpp>
#include <boost/signals2.hpp>
+#include <libdcp/metadata.h>
#include "dci_metadata.h"
class ServerDescription;
class Scaler;
class Filter;
class SoundProcessor;
+class Format;
+class DCPContentType;
/** @class Config
* @brief A singleton class holding configuration.
@@ -111,6 +114,18 @@ public:
return _default_still_length;
}
+ Format const * default_format () const {
+ return _default_format;
+ }
+
+ DCPContentType const * default_dcp_content_type () const {
+ return _default_dcp_content_type;
+ }
+
+ libdcp::XMLMetadata dcp_metadata () const {
+ return _dcp_metadata;
+ }
+
/** @param n New number of local encoding threads */
void set_num_local_encoding_threads (int n) {
_num_local_encoding_threads = n;
@@ -178,6 +193,18 @@ public:
_default_still_length = s;
}
+ void set_default_format (Format const * f) {
+ _default_format = f;
+ }
+
+ void set_default_dcp_content_type (DCPContentType const * t) {
+ _default_dcp_content_type = t;
+ }
+
+ void set_dcp_metadata (libdcp::XMLMetadata m) {
+ _dcp_metadata = m;
+ }
+
void write () const;
static Config* instance ();
@@ -216,6 +243,9 @@ private:
DCIMetadata _default_dci_metadata;
boost::optional<std::string> _language;
int _default_still_length;
+ Format const * _default_format;
+ DCPContentType const * _default_dcp_content_type;
+ libdcp::XMLMetadata _dcp_metadata;
/** Singleton instance, or 0 */
static Config* _instance;
diff --git a/src/lib/film.cc b/src/lib/film.cc
index 5481bd012..8fed87122 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -93,8 +93,8 @@ Film::Film (string d, bool must_exist)
: _playlist (new Playlist)
, _use_dci_name (true)
, _trust_content_headers (true)
- , _dcp_content_type (0)
- , _format (Format::from_id ("185"))
+ , _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)
diff --git a/src/lib/format.cc b/src/lib/format.cc
index a83d53ebd..f5026c0da 100644
--- a/src/lib/format.cc
+++ b/src/lib/format.cc
@@ -60,13 +60,6 @@ FixedFormat::name () const
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 ()
@@ -165,16 +158,6 @@ Format::from_id (string i)
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 ()
diff --git a/src/lib/format.h b/src/lib/format.h
index f240c89fc..d45a3a10a 100644
--- a/src/lib/format.h
+++ b/src/lib/format.h
@@ -67,10 +67,7 @@ public:
return _dci_name;
}
- std::string as_metadata () const;
-
static Format const * from_nickname (std::string n);
- static Format const * from_metadata (std::string m);
static Format const * from_id (std::string i);
static std::vector<Format const *> all ();
static void setup_formats ();
diff --git a/src/lib/writer.cc b/src/lib/writer.cc
index 8e771a5e2..b545848cb 100644
--- a/src/lib/writer.cc
+++ b/src/lib/writer.cc
@@ -23,6 +23,7 @@
#include <libdcp/picture_frame.h>
#include <libdcp/reel.h>
#include <libdcp/dcp.h>
+#include <libdcp/cpl.h>
#include "writer.h"
#include "compose.hpp"
#include "film.h"
@@ -32,6 +33,7 @@
#include "dcp_content_type.h"
#include "player.h"
#include "audio_mapping.h"
+#include "config.h"
#include "i18n.h"
@@ -322,7 +324,9 @@ Writer::finish ()
)
));
- dcp.write_xml ();
+ libdcp::XMLMetadata meta = Config::instance()->dcp_metadata ();
+ meta.set_issue_date_now ();
+ dcp.write_xml (meta);
_film->log()->log (String::compose (N_("Wrote %1 FULL, %2 FAKE, %3 REPEAT; %4 pushed to disk"), _full_written, _fake_written, _repeat_written, _pushed_to_disk));
}