class Film : public boost::enable_shared_from_this<Film>, public Signaller, public boost::noncopyable
{
public:
- Film (boost::filesystem::path, bool log = true);
+ Film (boost::optional<boost::filesystem::path> dir);
~Film ();
boost::filesystem::path info_file (DCPTimePeriod p) const;
boost::filesystem::path file (boost::filesystem::path f) const;
boost::filesystem::path dir (boost::filesystem::path d) const;
- std::list<std::string> read_metadata ();
+ void use_template (std::string name);
+ std::list<std::string> read_metadata (boost::optional<boost::filesystem::path> path = boost::optional<boost::filesystem::path> ());
void write_metadata () const;
- boost::shared_ptr<xmlpp::Document> metadata () const;
+ void write_template (boost::filesystem::path path) const;
+ boost::shared_ptr<xmlpp::Document> metadata (bool with_content_paths = true) const;
std::string isdcf_name (bool if_created_now) const;
std::string dcp_name (bool if_created_now = false) const;
/* GET */
- boost::filesystem::path directory () const {
+ boost::optional<boost::filesystem::path> directory () const {
return _directory;
}
return _upload_after_make_dcp;
}
+ std::string context_id () const {
+ return _context_id;
+ }
+
+
/* SET */
void set_directory (boost::filesystem::path);
void set_name (std::string);
void set_use_isdcf_name (bool);
- void examine_content (boost::shared_ptr<Content>);
void examine_and_add_content (boost::shared_ptr<Content>);
void add_content (boost::shared_ptr<Content>);
void remove_content (boost::shared_ptr<Content>);
/** Complete path to directory containing the film metadata;
* must not be relative.
*/
- boost::filesystem::path _directory;
+ boost::optional<boost::filesystem::path> _directory;
/** Name for DCP-o-matic */
std::string _name;
bool _signed;
bool _encrypted;
dcp::Key _key;
+ /** context ID used when encrypting picture assets; we keep it so that we can
+ * re-start picture MXF encodes.
+ */
+ std::string _context_id;
/** bandwidth for J2K files in bits per second */
int _j2k_bandwidth;
/** ISDCF naming stuff */
/** true if our state has changed since we last saved it */
mutable bool _dirty;
+ /** film being used as a template, or 0 */
+ boost::shared_ptr<Film> _template_film;
boost::signals2::scoped_connection _playlist_changed_connection;
boost::signals2::scoped_connection _playlist_order_changed_connection;