Add a PlaylistOrderChanged signal and emit it when the playlist
[dcpomatic.git] / src / lib / playlist.h
index 9e3dbb6dfbf39ccf2f6f6864d1ee2920983ff447..3af17bb6c4794cf3114016eedfba312dcab5576b 100644 (file)
 #ifndef DCPOMATIC_PLAYLIST_H
 #define DCPOMATIC_PLAYLIST_H
 
-#include <list>
-#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include "ffmpeg_content.h"
-#include "audio_mapping.h"
 #include "util.h"
 #include "frame_rate_change.h"
+#include <libcxml/cxml.h>
+#include <boost/shared_ptr.hpp>
+#include <boost/signals2.hpp>
+#include <list>
 
-class Content;
-class FFmpegContent;
-class FFmpegDecoder;
-class StillImageMagickContent;
-class StillImageMagickDecoder;
-class SndfileContent;
-class SndfileDecoder;
-class Job;
 class Film;
-class Region;
 
 struct ContentSorter
 {
@@ -68,7 +58,9 @@ public:
        std::string video_identifier () const;
 
        DCPTime length () const;
-       
+       boost::optional<DCPTime> start () const;
+       int64_t required_disk_space (int j2k_bandwidth, int audio_channels, int audio_frame_rate) const;
+
        int best_dcp_frame_rate () const;
        DCPTime video_end () const;
        FrameRateChange active_frame_rate_change (DCPTime, int dcp_frame_rate) const;
@@ -78,14 +70,15 @@ public:
 
        void repeat (ContentList, int);
 
-       /** Emitted when content has been added to or removed from the playlist */
+       /** Emitted when content has been added to or removed from the playlist; implies OrderChanged */
        mutable boost::signals2::signal<void ()> Changed;
+       mutable boost::signals2::signal<void ()> OrderChanged;
        /** Emitted when something about a piece of our content has changed;
         *  these emissions include when the position of the content changes.
         *  Third parameter is true if signals are currently being emitted frequently.
         */
        mutable boost::signals2::signal<void (boost::weak_ptr<Content>, int, bool)> ContentChanged;
-       
+
 private:
        void content_changed (boost::weak_ptr<Content>, int, bool);
        void reconnect ();