+ /** @return Technical details of this content; these are written to logs to
+ * help with debugging.
+ */
+ virtual std::string technical_summary () const;
+
+ virtual void as_xml (xmlpp::Node *, bool with_paths) const;
+ virtual dcpomatic::DCPTime full_length (std::shared_ptr<const Film>) const = 0;
+ virtual dcpomatic::DCPTime approximate_length () const = 0;
+ virtual std::string identifier () const;
+ /** @return points at which to split this content when
+ * REELTYPE_BY_VIDEO_CONTENT is in use.
+ */
+ virtual std::list<dcpomatic::DCPTime> reel_split_points (std::shared_ptr<const Film>) const;
+
+ std::shared_ptr<Content> clone () const;
+
+ void set_paths (std::vector<boost::filesystem::path> paths);
+
+ std::string path_summary () const;
+
+ std::vector<boost::filesystem::path> paths () const {
+ boost::mutex::scoped_lock lm (_mutex);
+ return _paths;
+ }
+
+ size_t number_of_paths () const {
+ boost::mutex::scoped_lock lm (_mutex);
+ return _paths.size ();
+ }
+
+ boost::filesystem::path path (size_t i) const {
+ boost::mutex::scoped_lock lm (_mutex);
+ return _paths[i];
+ }
+
+ std::time_t last_write_time (size_t i) const {