summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-05-03 00:56:16 +0100
committerCarl Hetherington <cth@carlh.net>2013-05-03 00:56:16 +0100
commitcc56fc111c742ed5ec072fa0bbe0b950150d40c1 (patch)
treeeadea8af082b332ccb5726dcafa7821be8c5ceaa /src/lib
parentccf029f29d128a6cc92a8d77b1e0d0e483fd1beb (diff)
Configurable default format and content type (#133).
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/config.cc14
-rw-r--r--src/lib/config.h20
-rw-r--r--src/lib/film.cc4
3 files changed, 36 insertions, 2 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc
index 5dce3748d..0e2e33a16 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -26,6 +26,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"
@@ -45,6 +47,8 @@ Config::Config ()
, _reference_scaler (Scaler::from_id (N_("bicubic")))
, _tms_path (N_("."))
, _sound_processor (SoundProcessor::from_id (N_("dolby_cp750")))
+ , _default_format (0)
+ , _default_dcp_content_type (0)
{
_allowed_dcp_frame_rates.push_back (24);
_allowed_dcp_frame_rates.push_back (25);
@@ -96,6 +100,10 @@ Config::Config ()
_sound_processor = SoundProcessor::from_id (v);
} else if (k == "language") {
_language = v;
+ } else if (k == "default_format") {
+ _default_format = Format::from_metadata (v);
+ } else if (k == "default_dcp_content_type") {
+ _default_dcp_content_type = DCPContentType::from_dci_name (v);
}
_default_dci_metadata.read (k, v);
@@ -154,6 +162,12 @@ Config::write () const
if (_language) {
f << "language " << _language.get() << "\n";
}
+ if (_default_format) {
+ f << "default_format " << _default_format->as_metadata() << "\n";
+ }
+ if (_default_dcp_content_type) {
+ f << "default_dcp_content_type " << _default_dcp_content_type->dci_name() << "\n";
+ }
_default_dci_metadata.write (f);
}
diff --git a/src/lib/config.h b/src/lib/config.h
index 011ca716f..6041045cf 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -33,6 +33,8 @@ class ServerDescription;
class Scaler;
class Filter;
class SoundProcessor;
+class Format;
+class DCPContentType;
/** @class Config
* @brief A singleton class holding configuration.
@@ -107,6 +109,14 @@ public:
return _language;
}
+ Format const * default_format () const {
+ return _default_format;
+ }
+
+ DCPContentType const * default_dcp_content_type () const {
+ return _default_dcp_content_type;
+ }
+
/** @param n New number of local encoding threads */
void set_num_local_encoding_threads (int n) {
_num_local_encoding_threads = n;
@@ -169,6 +179,14 @@ public:
void unset_language () {
_language = boost::none;
}
+
+ 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 write () const;
@@ -206,6 +224,8 @@ private:
/** Default DCI metadata for newly-created Films */
DCIMetadata _default_dci_metadata;
boost::optional<std::string> _language;
+ Format const * _default_format;
+ DCPContentType const * _default_dcp_content_type;
/** Singleton instance, or 0 */
static Config* _instance;
diff --git a/src/lib/film.cc b/src/lib/film.cc
index b0785df34..0ca374604 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -88,8 +88,8 @@ int const Film::state_version = 4;
Film::Film (string d, bool must_exist)
: _use_dci_name (true)
, _trust_content_header (true)
- , _dcp_content_type (0)
- , _format (0)
+ , _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)