#define DVDOMATIC_ENCODER_H
/** @file src/encoder.h
- * @brief Parent class for classes which can encode video and audio frames.
+ * @brief Encoder to J2K and WAV for DCP.
*/
#include <boost/shared_ptr.hpp>
virtual void process_end ();
float current_frames_per_second () const;
- bool skipping () const;
int video_frames_out () const;
private:
void frame_done ();
- void frame_skipped ();
- void write_audio (boost::shared_ptr<const AudioBuffers> audio);
+ void write_audio (boost::shared_ptr<const AudioBuffers> data);
void encoder_thread (ServerDescription *);
- void terminate_worker_threads ();
+ void terminate_threads ();
/** Film that we are encoding */
boost::shared_ptr<Film> _film;
- /** Mutex for _time_history, _just_skipped and _last_frame */
+ /** Mutex for _time_history and _last_frame */
mutable boost::mutex _history_mutex;
/** List of the times of completion of the last _history_size frames;
first is the most recently completed.
std::list<struct timeval> _time_history;
/** Number of frames that we should keep history for */
static int const _history_size;
- /** true if the last frame we processed was skipped (because it was already done) */
- bool _just_skipped;
/** Number of video frames received so far */
SourceFrame _video_frames_in;
#endif
bool _have_a_real_frame;
- bool _terminate_encoder;
- std::list<boost::shared_ptr<DCPVideoFrame> > _encode_queue;
- std::list<boost::thread *> _worker_threads;
- mutable boost::mutex _worker_mutex;
- boost::condition _worker_condition;
+ bool _terminate;
+ std::list<boost::shared_ptr<DCPVideoFrame> > _queue;
+ std::list<boost::thread *> _threads;
+ mutable boost::mutex _mutex;
+ boost::condition _condition;
boost::shared_ptr<Writer> _writer;
};