Remove duplicate audio/video pts offset variables and use just one.
[dcpomatic.git] / src / lib / content.h
index 9c7ad2fc2984df5ff021c2f623634ba96310f6a3..4ee7c267f354c5cf65da2f1c948f3b8d93b79424 100644 (file)
@@ -38,6 +38,7 @@ class Film;
 class ContentProperty
 {
 public:
+       static int const PATH;
        static int const POSITION;
        static int const LENGTH;
        static int const TRIM_START;
@@ -47,9 +48,11 @@ public:
 class Content : public boost::enable_shared_from_this<Content>, public boost::noncopyable
 {
 public:
+       Content (boost::shared_ptr<const Film>);
        Content (boost::shared_ptr<const Film>, Time);
        Content (boost::shared_ptr<const Film>, boost::filesystem::path);
        Content (boost::shared_ptr<const Film>, boost::shared_ptr<const cxml::Node>);
+       Content (boost::shared_ptr<const Film>, std::vector<boost::shared_ptr<Content> >);
        virtual ~Content () {}
        
        virtual void examine (boost::shared_ptr<Job>);
@@ -61,11 +64,27 @@ public:
        virtual std::string identifier () const;
 
        boost::shared_ptr<Content> clone () const;
-       
-       boost::filesystem::path path () const {
+
+       void set_path (boost::filesystem::path);
+
+       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 _path;
+               return _paths[i];
        }
+       
+       bool paths_valid () const;
 
        /** @return MD5 digest of the content's file(s) */
        std::string digest () const {
@@ -98,7 +117,7 @@ public:
        }
        
        Time end () const {
-               return position() + length_after_trim();
+               return position() + length_after_trim() - 1;
        }
 
        Time length_after_trim () const;
@@ -121,9 +140,10 @@ protected:
        */
        mutable boost::mutex _mutex;
 
+       /** Paths of our data files */
+       std::vector<boost::filesystem::path> _paths;
+       
 private:
-       /** Path of a file or a directory containing files */
-       boost::filesystem::path _path;
        std::string _digest;
        Time _position;
        Time _trim_start;