void disable_audio ();
void disable_subtitles ();
- void pass ();
+ bool pass ();
void seek (Time);
void seek_back ();
void seek_forward ();
- Time last_video () const {
- return _last_video;
+ Time position () const {
+ return _position;
}
private:
- void process_video (boost::shared_ptr<Piece>, boost::shared_ptr<const Image>, bool, boost::shared_ptr<Subtitle>, Time);
- void process_audio (boost::shared_ptr<Piece>, boost::shared_ptr<const AudioBuffers>, Time);
+ void process_video (boost::weak_ptr<Content>, boost::shared_ptr<const Image>, bool, Time);
+ void process_audio (boost::weak_ptr<Content>, boost::shared_ptr<const AudioBuffers>, Time);
void setup_pieces ();
void playlist_changed ();
void content_changed (boost::weak_ptr<Content>, int);
- void emit_black_frame ();
- void emit_silence (Time);
+ void do_seek (Time, bool);
+ void add_black_piece (Time, Time);
+ void add_silent_piece (Time, Time);
+ void flush ();
boost::shared_ptr<const Film> _film;
boost::shared_ptr<const Playlist> _playlist;
/** Our pieces are ready to go; if this is false the pieces must be (re-)created before they are used */
bool _have_valid_pieces;
std::list<boost::shared_ptr<Piece> > _pieces;
-
- /** Time of the earliest thing not yet to have been emitted */
Time _position;
- Time _last_black;
- Time _last_silence;
-
- /* XXX: position and last_video? Need both? */
AudioBuffers _audio_buffers;
- Time _last_video;
- bool _last_was_black;
Time _next_audio;
};