X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fvideo_decoder.h;h=0b05b2f7143690237754d810d8557d8e80cb9d77;hb=47f25009bcbc765e397bcb471dd361a511c99daf;hp=5acce7c8d806701ec557140de9a42b465c0b2114;hpb=cafa76a2b52449ce3c9eecfd0ea53b7318814951;p=dcpomatic.git diff --git a/src/lib/video_decoder.h b/src/lib/video_decoder.h index 5acce7c8d..0b05b2f71 100644 --- a/src/lib/video_decoder.h +++ b/src/lib/video_decoder.h @@ -17,64 +17,53 @@ */ -#ifndef DVDOMATIC_VIDEO_DECODER_H -#define DVDOMATIC_VIDEO_DECODER_H +#ifndef DCPOMATIC_VIDEO_DECODER_H +#define DCPOMATIC_VIDEO_DECODER_H #include "video_source.h" -#include "stream.h" #include "decoder.h" -class VideoDecoder : public VideoSource, public virtual Decoder +class VideoContent; + +class VideoDecoder : public TimedVideoSource, public virtual Decoder { public: - VideoDecoder (boost::shared_ptr, boost::shared_ptr, Job *); + VideoDecoder (boost::shared_ptr); - /** @return video frames per second, or 0 if unknown */ - virtual float frames_per_second () const = 0; + /** @return video frame rate second, or 0 if unknown */ + virtual float video_frame_rate () const = 0; /** @return native size in pixels */ - virtual Size native_size () const = 0; + virtual libdcp::Size native_size () const = 0; + /** @return length according to our content's header */ + virtual ContentVideoFrame video_length () const = 0; virtual int time_base_numerator () const = 0; virtual int time_base_denominator () const = 0; virtual int sample_aspect_ratio_numerator () const = 0; virtual int sample_aspect_ratio_denominator () const = 0; - virtual void set_subtitle_stream (boost::shared_ptr); - - void set_progress () const; + void set_progress (Job *) const; - SourceFrame video_frame () const { + int video_frame () const { return _video_frame; } - boost::shared_ptr subtitle_stream () const { - return _subtitle_stream; - } - - std::vector > subtitle_streams () const { - return _subtitle_streams; + double last_content_time () const { + return _last_content_time; } protected: virtual PixelFormat pixel_format () const = 0; - void emit_video (boost::shared_ptr); + void emit_video (boost::shared_ptr, bool, double); void emit_subtitle (boost::shared_ptr); - void repeat_last_video (); - - boost::shared_ptr _subtitle_stream; - std::vector > _subtitle_streams; private: - void signal_video (boost::shared_ptr, boost::shared_ptr); - - SourceFrame _video_frame; - + int _video_frame; + double _last_content_time; + boost::shared_ptr _timed_subtitle; - - boost::shared_ptr _last_image; - boost::shared_ptr _last_subtitle; }; #endif