X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fvideo_decoder.h;h=ef1ab041a052589f003816e26b239dd4e2ef2a9b;hb=dea922bbc1fa2b643140a6b5275e58a1fb0225c9;hp=ea1899840a7252a6358c682a0a1e85167bb3c7bd;hpb=288e7e64e9be84b8dbe11f5acb490e64a29d9378;p=dcpomatic.git diff --git a/src/lib/video_decoder.h b/src/lib/video_decoder.h index ea1899840..ef1ab041a 100644 --- a/src/lib/video_decoder.h +++ b/src/lib/video_decoder.h @@ -27,12 +27,14 @@ class VideoDecoder : public VideoSource, public virtual Decoder { public: - VideoDecoder (boost::shared_ptr, boost::shared_ptr, Job *); + VideoDecoder (boost::shared_ptr, DecodeOptions, Job *); /** @return video frames per second, or 0 if unknown */ virtual float frames_per_second () const = 0; /** @return native size in pixels */ - virtual Size native_size () const = 0; + virtual libdcp::Size native_size () const = 0; + /** @return length (in source video frames), according to our content's header */ + virtual SourceFrame length () const = 0; virtual int time_base_numerator () const = 0; virtual int time_base_denominator () const = 0; @@ -43,7 +45,7 @@ public: void set_progress () const; - SourceFrame video_frame () const { + int video_frame () const { return _video_frame; } @@ -55,11 +57,15 @@ public: return _subtitle_streams; } + double last_source_time () const { + return _last_source_time; + } + protected: virtual PixelFormat pixel_format () const = 0; - void emit_video (boost::shared_ptr); + void emit_video (boost::shared_ptr, double); void emit_subtitle (boost::shared_ptr); void repeat_last_video (); @@ -69,10 +75,11 @@ protected: std::vector > _subtitle_streams; private: - void signal_video (boost::shared_ptr, boost::shared_ptr); - - SourceFrame _video_frame; + void signal_video (boost::shared_ptr, bool, boost::shared_ptr); + int _video_frame; + double _last_source_time; + boost::shared_ptr _timed_subtitle; boost::shared_ptr _last_image;