class VideoFilterGraph;
class FFmpegAudioStream;
class AudioBuffers;
+class Image;
struct ffmpeg_pts_offset_test;
/** @class FFmpegDecoder
class FFmpegDecoder : public FFmpeg, public Decoder
{
public:
- FFmpegDecoder (boost::shared_ptr<const FFmpegContent>, boost::shared_ptr<Log>);
+ FFmpegDecoder (boost::shared_ptr<const Film> film, boost::shared_ptr<const FFmpegContent>, bool fast);
bool pass ();
void seek (ContentTime time, bool);
void decode_audio_packet ();
void decode_subtitle_packet ();
- void decode_bitmap_subtitle (AVSubtitleRect const * rect, ContentTimePeriod period);
- void decode_ass_subtitle (std::string ass, ContentTimePeriod period);
+ void decode_bitmap_subtitle (AVSubtitleRect const * rect, ContentTime from);
+ void decode_ass_subtitle (std::string ass, ContentTime from);
void maybe_add_subtitle ();
boost::shared_ptr<AudioBuffers> deinterleave_audio (boost::shared_ptr<FFmpegAudioStream> stream) const;
- boost::shared_ptr<Log> _log;
-
std::list<boost::shared_ptr<VideoFilterGraph> > _filter_graphs;
boost::mutex _filter_graphs_mutex;
ContentTime _pts_offset;
+ boost::optional<ContentTime> _current_subtitle_to;
+ /** true if we have a subtitle which has not had emit_stop called for it yet */
+ bool _have_current_subtitle;
+
+ boost::shared_ptr<Image> _black_image;
+
+ std::vector<boost::optional<ContentTime> > _next_time;
};