/*
- Copyright (C) 2012 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2017 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
*/
+#ifndef DCPOMATIC_TRANSCODER_H
+#define DCPOMATIC_TRANSCODER_H
+
#include "types.h"
#include "player_subtitles.h"
#include <boost/weak_ptr.hpp>
class Film;
class Encoder;
class Player;
-class Writer;
class Job;
class PlayerVideo;
class AudioBuffers;
{
public:
Transcoder (boost::shared_ptr<const Film> film, boost::weak_ptr<Job> job);
+ virtual ~Transcoder () {}
- void go ();
-
- float current_encoding_rate () const;
- int video_frames_enqueued () const;
+ virtual void go () = 0;
- /** @return true if we are in the process of calling Encoder::process_end */
- bool finishing () const {
- return _finishing;
- }
+ /** @return the current frame rate over the last short while */
+ virtual float current_rate () const = 0;
+ /** @return the number of frames that are done */
+ virtual Frame frames_done () const = 0;
+ virtual bool finishing () const = 0;
-private:
-
- void video (boost::shared_ptr<PlayerVideo>, DCPTime);
- void audio (boost::shared_ptr<AudioBuffers>, DCPTime);
- void subtitle (PlayerSubtitles, DCPTimePeriod);
+protected:
+ virtual void video (boost::shared_ptr<PlayerVideo>, DCPTime) = 0;
+ virtual void audio (boost::shared_ptr<AudioBuffers>, DCPTime) = 0;
+ virtual void subtitle (PlayerSubtitles, DCPTimePeriod) = 0;
boost::shared_ptr<const Film> _film;
boost::weak_ptr<Job> _job;
boost::shared_ptr<Player> _player;
- boost::shared_ptr<Writer> _writer;
- boost::shared_ptr<Encoder> _encoder;
- bool _finishing;
- bool _non_burnt_subtitles;
};
+
+#endif