Try to move J2K bandwidth and colour LUT to be per-film (#23).
[dcpomatic.git] / src / lib / transcoder.h
index 324a72037752f5bef2f1f07584996c66be803c7a..b50113742369c817aa3e0b57d28158f31d111b41 100644 (file)
@@ -17,8 +17,6 @@
 
 */
 
-#include "decoder.h"
-
 /** @file  src/transcoder.h
  *  @brief A class which takes a FilmState and some Options, then uses those to transcode a Film.
  *
@@ -26,6 +24,8 @@
  *  as a parameter to the constructor.
  */
 
+#include "decoder_factory.h"
+
 class Film;
 class Job;
 class Encoder;
@@ -33,6 +33,11 @@ class FilmState;
 class Matcher;
 class VideoFilter;
 class Gain;
+class VideoDecoder;
+class AudioDecoder;
+class DelayLine;
+class EncodeOptions;
+class DecodeOptions;
 
 /** @class Transcoder
  *  @brief A class which takes a FilmState and some Options, then uses those to transcode a Film.
@@ -43,13 +48,17 @@ class Gain;
 class Transcoder
 {
 public:
-       Transcoder (boost::shared_ptr<Film> f, boost::shared_ptr<const Options> o, Job* j, boost::shared_ptr<Encoder> e);
+       Transcoder (
+               boost::shared_ptr<Film> f,
+               boost::shared_ptr<const DecodeOptions> o,
+               Job* j,
+               boost::shared_ptr<Encoder> e
+               );
 
        void go ();
 
-       /** @return Our decoder */
-       boost::shared_ptr<Decoder> decoder () {
-               return _decoder;
+       boost::shared_ptr<VideoDecoder> video_decoder () const {
+               return _decoders.video;
        }
 
 protected:
@@ -57,8 +66,8 @@ protected:
        Job* _job;
        /** The encoder that we will use */
        boost::shared_ptr<Encoder> _encoder;
-       /** The decoder that we will use */
-       boost::shared_ptr<Decoder> _decoder;
+       /** The decoders that we will use */
+       Decoders _decoders;
        boost::shared_ptr<Matcher> _matcher;
        boost::shared_ptr<DelayLine> _delay_line;
        boost::shared_ptr<Gain> _gain;