*/
/** @file src/ab_transcoder.h
- * @brief A transcoder which uses one FilmState for the left half of the screen, and a different one
+ * @brief A transcoder which uses one Film for the left half of the screen, and a different one
* for the right half (to facilitate A/B comparisons of settings)
*/
#include <boost/shared_ptr.hpp>
#include <stdint.h>
+#include "util.h"
+#include "decoder_factory.h"
class Job;
class Encoder;
-class Decoder;
-class FilmState;
-class Options;
+class VideoDecoder;
+class AudioDecoder;
class Image;
class Log;
+class Subtitle;
+class Film;
+class Matcher;
+class DelayLine;
+class Gain;
+class Combiner;
+class Trimmer;
/** @class ABTranscoder
- * @brief A transcoder which uses one FilmState for the left half of the screen, and a different one
+ * @brief A transcoder which uses one Film for the left half of the screen, and a different one
* for the right half (to facilitate A/B comparisons of settings)
*/
class ABTranscoder
{
public:
ABTranscoder (
- boost::shared_ptr<const FilmState> a,
- boost::shared_ptr<const FilmState> b,
- boost::shared_ptr<const Options> o,
+ boost::shared_ptr<Film> a,
+ boost::shared_ptr<Film> b,
+ DecodeOptions o,
Job* j,
- Log* l,
boost::shared_ptr<Encoder> e
);
- ~ABTranscoder ();
-
void go ();
private:
- void process_video (boost::shared_ptr<Image>, int, int);
-
- boost::shared_ptr<const FilmState> _fs_a;
- boost::shared_ptr<const FilmState> _fs_b;
- boost::shared_ptr<const Options> _opt;
+ boost::shared_ptr<Film> _film_a;
+ boost::shared_ptr<Film> _film_b;
Job* _job;
- Log* _log;
boost::shared_ptr<Encoder> _encoder;
- boost::shared_ptr<Decoder> _da;
- boost::shared_ptr<Decoder> _db;
- int _last_frame;
+ Decoders _da;
+ Decoders _db;
+ boost::shared_ptr<Combiner> _combiner;
+ boost::shared_ptr<Matcher> _matcher;
+ boost::shared_ptr<DelayLine> _delay_line;
+ boost::shared_ptr<Gain> _gain;
+ boost::shared_ptr<Trimmer> _trimmer;
boost::shared_ptr<Image> _image;
};