From 4fbd1901fdabc829cfa7e7d4d0c1272bba87033c Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 15 Nov 2012 22:26:16 +0000 Subject: Untested external audio support; AB transcodes still broken. --- src/lib/video_decoder.h | 60 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/lib/video_decoder.h (limited to 'src/lib/video_decoder.h') diff --git a/src/lib/video_decoder.h b/src/lib/video_decoder.h new file mode 100644 index 000000000..df06b7cd9 --- /dev/null +++ b/src/lib/video_decoder.h @@ -0,0 +1,60 @@ +#ifndef DVDOMATIC_VIDEO_DECODER_H +#define DVDOMATIC_VIDEO_DECODER_H + +#include "video_source.h" +#include "stream.h" +#include "decoder.h" + +class VideoDecoder : public VideoSource, public virtual Decoder +{ +public: + VideoDecoder (boost::shared_ptr, boost::shared_ptr, 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 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::optional); + + SourceFrame video_frame () const { + return _video_frame; + } + + boost::optional subtitle_stream () const { + return _subtitle_stream; + } + + std::vector subtitle_streams () const { + return _subtitle_streams; + } + +protected: + + virtual PixelFormat pixel_format () const = 0; + void set_progress () const; + + void emit_video (boost::shared_ptr); + void emit_subtitle (boost::shared_ptr); + void repeat_last_video (); + + boost::optional _subtitle_stream; + std::vector _subtitle_streams; + +private: + void signal_video (boost::shared_ptr, boost::shared_ptr); + + SourceFrame _video_frame; + + boost::shared_ptr _timed_subtitle; + + boost::shared_ptr _last_image; + boost::shared_ptr _last_subtitle; +}; + +#endif -- cgit v1.2.3