Merge.
[dcpomatic.git] / src / lib / transcoder.h
index b50113742369c817aa3e0b57d28158f31d111b41..25b2ef90841c68a23dd077eb12d41d0c4a282969 100644 (file)
 
 */
 
-/** @file  src/transcoder.h
- *  @brief A class which takes a FilmState and some Options, then uses those to transcode a Film.
- *
- *  A decoder is selected according to the content type, and the encoder can be specified
- *  as a parameter to the constructor.
- */
-
-#include "decoder_factory.h"
+#include "types.h"
+#include "encoder.h"
 
 class Film;
-class Job;
 class Encoder;
-class FilmState;
-class Matcher;
 class VideoFilter;
-class Gain;
-class VideoDecoder;
-class AudioDecoder;
-class DelayLine;
-class EncodeOptions;
-class DecodeOptions;
+class Player;
 
-/** @class Transcoder
- *  @brief A class which takes a FilmState and some Options, then uses those to transcode a Film.
- *
- *  A decoder is selected according to the content type, and the encoder can be specified
- *  as a parameter to the constructor.
- */
-class Transcoder
+/** @class Transcoder */
+class Transcoder : public boost::noncopyable
 {
 public:
-       Transcoder (
-               boost::shared_ptr<Film> f,
-               boost::shared_ptr<const DecodeOptions> o,
-               Job* j,
-               boost::shared_ptr<Encoder> e
-               );
+       Transcoder (boost::shared_ptr<const Film>, boost::shared_ptr<Job>);
 
        void go ();
 
-       boost::shared_ptr<VideoDecoder> video_decoder () const {
-               return _decoders.video;
+       float current_encoding_rate () const;
+       int video_frames_out () const;
+
+       /** @return true if we are in the process of calling Encoder::process_end */
+       bool finishing () const {
+               return _finishing;
        }
 
-protected:
-       /** A Job that is running this Transcoder, or 0 */
-       Job* _job;
-       /** The encoder that we will use */
+private:
+       boost::shared_ptr<const Film> _film;
+       boost::shared_ptr<Player> _player;
        boost::shared_ptr<Encoder> _encoder;
-       /** The decoders that we will use */
-       Decoders _decoders;
-       boost::shared_ptr<Matcher> _matcher;
-       boost::shared_ptr<DelayLine> _delay_line;
-       boost::shared_ptr<Gain> _gain;
+       bool _finishing;
 };