summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-04-02 17:01:09 +0100
committerCarl Hetherington <cth@carlh.net>2013-04-02 17:18:33 +0100
commitbda2f7642709ca3aec35de9965a0e952e34f7dd1 (patch)
tree86928d068ef8942f5a9cdabc9f217fbe9f81a200
parentfff7a8232b18ce6191e60ba911c29b64b9063d4d (diff)
A little tidying up.
-rw-r--r--src/lib/film.cc32
-rw-r--r--src/lib/film.h44
2 files changed, 33 insertions, 43 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc
index 19e900784..d82dce297 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -173,18 +173,17 @@ Film::Film (Film const & o)
, _colour_lut (o._colour_lut)
, _j2k_bandwidth (o._j2k_bandwidth)
, _dci_metadata (o._dci_metadata)
- , _dci_date (o._dci_date)
, _dcp_frame_rate (o._dcp_frame_rate)
+ , _dci_date (o._dci_date)
, _dirty (o._dirty)
{
+ for (ContentList::iterator i = o._content.begin(); i != o._content.end(); ++i) {
+ _content.push_back ((*i)->clone ());
+ }
+
_playlist->setup (_content);
}
-Film::~Film ()
-{
-
-}
-
string
Film::video_state_identifier () const
{
@@ -311,7 +310,7 @@ Film::make_dcp ()
}
}
-/** Start a job to analyse the audio of our content file */
+/** Start a job to analyse the audio in our Playlist */
void
Film::analyse_audio ()
{
@@ -345,12 +344,6 @@ Film::analyse_audio_finished ()
_analyse_audio_job.reset ();
}
-void
-Film::examine_content_finished ()
-{
- /* XXX */
-}
-
/** Start a job to send our DCP to the configured TMS */
void
Film::send_dcp_to_tms ()
@@ -422,8 +415,8 @@ Film::write_metadata () const
root->add_child("ColourLUT")->add_child_text (boost::lexical_cast<string> (_colour_lut));
root->add_child("J2KBandwidth")->add_child_text (boost::lexical_cast<string> (_j2k_bandwidth));
_dci_metadata.as_xml (root->add_child ("DCIMetadata"));
- root->add_child("DCIDate")->add_child_text (boost::gregorian::to_iso_string (_dci_date));
root->add_child("DCPFrameRate")->add_child_text (boost::lexical_cast<string> (_dcp_frame_rate));
+ root->add_child("DCIDate")->add_child_text (boost::gregorian::to_iso_string (_dci_date));
for (ContentList::iterator i = the_content.begin(); i != the_content.end(); ++i) {
(*i)->as_xml (root->add_child ("Content"));
@@ -488,8 +481,8 @@ Film::read_metadata ()
_colour_lut = f.number_child<int> ("ColourLUT");
_j2k_bandwidth = f.number_child<int> ("J2KBandwidth");
_dci_metadata = DCIMetadata (f.node_child ("DCIMetadata"));
- _dci_date = boost::gregorian::from_undelimited_string (f.string_child ("DCIDate"));
_dcp_frame_rate = f.number_child<int> ("DCPFrameRate");
+ _dci_date = boost::gregorian::from_undelimited_string (f.string_child ("DCIDate"));
list<shared_ptr<cxml::Node> > c = f.node_children ("Content");
for (list<shared_ptr<cxml::Node> >::iterator i = c.begin(); i != c.end(); ++i) {
@@ -624,8 +617,7 @@ Film::dci_name (bool if_created_now) const
}
}
- /* XXX */
- switch (2) {
+ switch (audio_channels ()) {
case 1:
d << "_10";
break;
@@ -715,8 +707,10 @@ Film::set_trust_content_headers (bool t)
if (!_trust_content_headers && !content().empty()) {
/* We just said that we don't trust the content's header */
- /* XXX */
-// examine_content ();
+ ContentList c = content ();
+ for (ContentList::iterator i = c.begin(); i != c.end(); ++i) {
+ examine_content (*i);
+ }
}
}
diff --git a/src/lib/film.h b/src/lib/film.h
index 9682a37d7..e1084e1ca 100644
--- a/src/lib/film.h
+++ b/src/lib/film.h
@@ -18,8 +18,8 @@
*/
/** @file src/film.h
- * @brief A representation of a piece of video (with sound), including naming,
- * the source content file, and how it should be presented in a DCP.
+ * @brief A representation of some audio and video content, and details of
+ * how they should be presented in a DCP.
*/
#ifndef DVDOMATIC_FILM_H
@@ -52,17 +52,14 @@ class Player;
class Playlist;
/** @class Film
- * @brief A representation of a video, maybe with sound.
- *
- * A representation of a piece of video (maybe with sound), including naming,
- * the source content file, and how it should be presented in a DCP.
+ * @brief A representation of some audio and video content, and details of
+ * how they should be presented in a DCP.
*/
class Film : public boost::enable_shared_from_this<Film>
{
public:
Film (std::string d, bool must_exist = true);
Film (Film const &);
- ~Film ();
std::string info_dir () const;
std::string j2c_path (int f, bool t) const;
@@ -74,7 +71,6 @@ public:
void examine_content (boost::shared_ptr<Content>);
void analyse_audio ();
void send_dcp_to_tms ();
-
void make_dcp ();
/** @return Logger.
@@ -92,7 +88,6 @@ public:
int target_audio_sample_rate () const;
void write_metadata () const;
- void read_metadata ();
libdcp::Size cropped_size (libdcp::Size) const;
std::string dci_name (bool if_created_now) const;
@@ -103,12 +98,12 @@ public:
return _dirty;
}
- void set_dci_date_today ();
-
bool have_dcp () const;
boost::shared_ptr<Player> player () const;
+ /* Proxies for some Playlist methods */
+
ContentAudioFrame audio_length () const;
int audio_channels () const;
int audio_frame_rate () const;
@@ -127,6 +122,7 @@ public:
NAME,
USE_DCI_NAME,
TRUST_CONTENT_HEADERS,
+ /** The content list has changed (i.e. content has been added, moved around or removed) */
CONTENT,
DCP_CONTENT_TYPE,
FORMAT,
@@ -286,7 +282,6 @@ public:
void set_ab (bool);
void set_audio_gain (float);
void set_audio_delay (int);
- void set_still_duration (int);
void set_with_subtitles (bool);
void set_subtitle_offset (int);
void set_subtitle_scale (float);
@@ -294,10 +289,14 @@ public:
void set_j2k_bandwidth (int);
void set_dci_metadata (DCIMetadata);
void set_dcp_frame_rate (int);
+ void set_dci_date_today ();
- /** Emitted when some property has changed */
+ /** Emitted when some property has of the Film has changed */
mutable boost::signals2::signal<void (Property)> Changed;
+ /** Emitted when some property of our content has changed */
+ mutable boost::signals2::signal<void (int)> ContentChanged;
+
boost::signals2::signal<void ()> AudioAnalysisSucceeded;
/** Current version number of the state file */
@@ -305,17 +304,15 @@ public:
private:
- /** Log to write to */
- boost::shared_ptr<Log> _log;
-
- /** Any running AnalyseAudioJob, or 0 */
- boost::shared_ptr<AnalyseAudioJob> _analyse_audio_job;
-
void signal_changed (Property);
- void examine_content_finished ();
void analyse_audio_finished ();
std::string video_state_identifier () const;
+ void read_metadata ();
+ /** Log to write to */
+ boost::shared_ptr<Log> _log;
+ /** Any running AnalyseAudioJob, or 0 */
+ boost::shared_ptr<AnalyseAudioJob> _analyse_audio_job;
boost::shared_ptr<Playlist> _playlist;
/** Complete path to directory containing the film metadata;
@@ -329,8 +326,8 @@ private:
std::string _name;
/** True if a auto-generated DCI-compliant name should be used for our DCP */
bool _use_dci_name;
- ContentList _content;
bool _trust_content_headers;
+ ContentList _content;
/** The type of content that this Film represents (feature, trailer etc.) */
DCPContentType const * _dcp_content_type;
/** The format to present this Film in (flat, scope, etc.) */
@@ -369,13 +366,12 @@ private:
int _colour_lut;
/** bandwidth for J2K files in bits per second */
int _j2k_bandwidth;
-
/** DCI naming stuff */
DCIMetadata _dci_metadata;
- /** The date that we should use in a DCI name */
- boost::gregorian::date _dci_date;
/** Frames per second to run our DCP at */
int _dcp_frame_rate;
+ /** The date that we should use in a DCI name */
+ boost::gregorian::date _dci_date;
/** true if our state has changed since we last saved it */
mutable bool _dirty;