/** @file src/film.h
* @brief A representation of some audio and video content, and details of
* how they should be presented in a DCP.
*/
/** @file src/film.h
* @brief A representation of some audio and video content, and details of
* how they should be presented in a DCP.
*/
#include "change_signaller.h"
#include "dcp_text_track.h"
#include "frame_rate_change.h"
#include "signaller.h"
#include "change_signaller.h"
#include "dcp_text_track.h"
#include "frame_rate_change.h"
#include "signaller.h"
#include <boost/filesystem.hpp>
#include <boost/signals2.hpp>
#include <boost/thread.hpp>
#include <boost/filesystem.hpp>
#include <boost/signals2.hpp>
#include <boost/thread.hpp>
/** @class Film
*
* @brief A representation of some audio, video, subtitle and closed-caption content,
/** @class Film
*
* @brief A representation of some audio, video, subtitle and closed-caption content,
void use_template (std::string name);
std::list<std::string> read_metadata (boost::optional<boost::filesystem::path> path = boost::optional<boost::filesystem::path> ());
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 (boost::filesystem::path path) const;
void write_template (boost::filesystem::path path) const;
std::shared_ptr<xmlpp::Document> metadata (bool with_content_paths = true) const;
void write_metadata (boost::filesystem::path path) const;
void write_template (boost::filesystem::path path) const;
std::shared_ptr<xmlpp::Document> metadata (bool with_content_paths = true) const;
void set_distributor (boost::optional<std::string> d = boost::none);
void set_luminance (boost::optional<dcp::Luminance> l = boost::none);
void set_audio_language (boost::optional<dcp::LanguageTag> language);
void set_distributor (boost::optional<std::string> d = boost::none);
void set_luminance (boost::optional<dcp::Luminance> l = boost::none);
void set_audio_language (boost::optional<dcp::LanguageTag> language);
/** Emitted when we have something important to tell the user */
boost::signals2::signal<void (std::string)> Message;
/** Emitted when we have something important to tell the user */
boost::signals2::signal<void (std::string)> Message;
void audio_analysis_finished ();
void check_settings_consistency ();
void maybe_set_container_and_resolution ();
void audio_analysis_finished ();
void check_settings_consistency ();
void maybe_set_container_and_resolution ();
/** Name for DCP-o-matic */
std::string _name;
/** True if a auto-generated ISDCF-compliant name should be used for our DCP */
/** Name for DCP-o-matic */
std::string _name;
/** True if a auto-generated ISDCF-compliant name should be used for our DCP */
bool _two_d_version_of_three_d = false;
boost::optional<dcp::Luminance> _luminance;
boost::optional<dcp::LanguageTag> _audio_language;
bool _two_d_version_of_three_d = false;
boost::optional<dcp::Luminance> _luminance;
boost::optional<dcp::LanguageTag> _audio_language;