diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-04-02 19:19:49 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-04-02 19:19:49 +0100 |
| commit | 20cd8bdecb9667f7d838dbb7210f3e1a4765c662 (patch) | |
| tree | 87363a3a5df1e7572f28befb32e5be7b880f91ea /src | |
| parent | d5eb7198e71c94f2756331aa2f0452c6b6c9398d (diff) | |
| parent | bda2f7642709ca3aec35de9965a0e952e34f7dd1 (diff) | |
Merge branch 'content-rework-take5' of ssh://houllier/home/carl/git/dvdomatic into content-rework-take5
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/film.cc | 32 | ||||
| -rw-r--r-- | src/lib/film.h | 44 |
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; |
