X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fplayer.h;h=539fae67a2ad7730e226af84bffd95f37f1dad14;hb=47f25009bcbc765e397bcb471dd361a511c99daf;hp=79203692e963dc9c53df06dab626ad798378f6ce;hpb=1bff0990433ab0ce588acaef7c589fa623bd998b;p=dcpomatic.git diff --git a/src/lib/player.h b/src/lib/player.h index 79203692e..539fae67a 100644 --- a/src/lib/player.h +++ b/src/lib/player.h @@ -17,8 +17,8 @@ */ -#ifndef DVDOMATIC_PLAYER_H -#define DVDOMATIC_PLAYER_H +#ifndef DCPOMATIC_PLAYER_H +#define DCPOMATIC_PLAYER_H #include #include @@ -28,14 +28,14 @@ #include "video_sink.h" #include "audio_sink.h" -class FFmpegDecoder; -class ImageMagickDecoder; +class VideoDecoder; class SndfileDecoder; class Job; class Film; class Playlist; +class AudioContent; -class Player : public VideoSource, public AudioSource, public VideoSink, public AudioSink, public boost::enable_shared_from_this +class Player : public TimedVideoSource, public TimedAudioSource, public TimedVideoSink, public boost::enable_shared_from_this { public: Player (boost::shared_ptr, boost::shared_ptr); @@ -43,18 +43,18 @@ public: void disable_video (); void disable_audio (); void disable_subtitles (); - void disable_video_sync (); bool pass (); void set_progress (boost::shared_ptr); bool seek (double); - bool seek_to_last (); + void seek_back (); + void seek_forward (); double last_video_time () const; private: - void process_video (boost::shared_ptr i, bool same, boost::shared_ptr s); - void process_audio (boost::shared_ptr); + void process_video (boost::shared_ptr i, bool same, boost::shared_ptr s, double); + void process_audio (boost::weak_ptr, boost::shared_ptr, double); void setup_decoders (); void playlist_changed (); void content_changed (boost::weak_ptr, int); @@ -67,13 +67,12 @@ private: bool _subtitles; bool _have_valid_decoders; - boost::shared_ptr _ffmpeg_decoder; - bool _ffmpeg_decoder_done; - std::list > _imagemagick_decoders; - std::list >::iterator _imagemagick_decoder; + std::list > _video_decoders; + std::list >::iterator _video_decoder; std::list > _sndfile_decoders; - bool _video_sync; + boost::shared_ptr _audio_buffers; + boost::optional _audio_time; }; #endif