Add a PlaylistOrderChanged signal and emit it when the playlist
[dcpomatic.git] / src / lib / playlist.h
index 3829d6f31e9254367b006823aa44f8f000d477fe..3af17bb6c4794cf3114016eedfba312dcab5576b 100644 (file)
 #ifndef DCPOMATIC_PLAYLIST_H
 #define DCPOMATIC_PLAYLIST_H
 
-#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/enable_shared_from_this.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,6 +58,8 @@ 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;
@@ -78,8 +70,9 @@ 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.