Merge.
[dcpomatic.git] / src / lib / decoder.h
index 0d35ebb3a01675c3b75e7961f2975154dc4d9724..cc4c87373616e6f4f469e4f3ce9018b4ee5aa929 100644 (file)
 #include "stream.h"
 #include "video_source.h"
 #include "audio_source.h"
+#include "film.h"
+#include "options.h"
 
 class Job;
-class DecodeOptions;
 class Image;
 class Log;
 class DelayLine;
 class TimedSubtitle;
 class Subtitle;
-class Film;
 class FilterGraph;
 
 /** @class Decoder.
@@ -54,24 +54,27 @@ class FilterGraph;
 class Decoder
 {
 public:
-       Decoder (boost::shared_ptr<Film>, boost::shared_ptr<const DecodeOptions>, Job *);
+       Decoder (boost::shared_ptr<Film>, DecodeOptions, Job *);
        virtual ~Decoder () {}
 
        virtual bool pass () = 0;
-       /** Seek.
-        *  @return true on error.
-        */
-       virtual bool seek (SourceFrame);
+       virtual bool seek (double);
+       virtual bool seek_to_last ();
 
        boost::signals2::signal<void()> OutputChanged;
 
 protected:
        /** our Film */
        boost::shared_ptr<Film> _film;
-       /** our options */
-       boost::shared_ptr<const DecodeOptions> _opt;
+       /** our decode options */
+       DecodeOptions _opt;
        /** associated Job, or 0 */
        Job* _job;
+
+private:
+       virtual void film_changed (Film::Property) {}
+       
+       boost::signals2::scoped_connection _film_connection;
 };
 
 #endif