Some include tidying.
[dcpomatic.git] / src / lib / video_decoder.h
index 8715b9714cfefadcbc37c1a53016202153fb51af..f37d4b1ad8458f7b26176676e4c788a054e2d78d 100644 (file)
 
 */
 
+/** @file  src/lib/video_decoder.h
+ *  @brief VideoDecoder class.
+ */
+
 #ifndef DCPOMATIC_VIDEO_DECODER_H
 #define DCPOMATIC_VIDEO_DECODER_H
 
-#include <boost/signals2.hpp>
-#include <boost/shared_ptr.hpp>
 #include "decoder.h"
 #include "video_content.h"
 #include "util.h"
 #include "content_video.h"
+#include <boost/signals2.hpp>
+#include <boost/shared_ptr.hpp>
 
 class VideoContent;
+class ImageProxy;
 class Image;
 
+/** @class VideoDecoder
+ *  @brief Parent for classes which decode video.
+ */
 class VideoDecoder : public virtual Decoder
 {
 public:
        VideoDecoder (boost::shared_ptr<const VideoContent> c);
 
-       boost::optional<ContentVideo> get_video (VideoFrame frame, bool accurate);
+       std::list<ContentVideo> get_video (VideoFrame frame, bool accurate);
 
        boost::shared_ptr<const VideoContent> video_content () const {
                return _video_content;
@@ -46,13 +54,21 @@ public:
 #endif
 
 protected:
+       friend struct video_decoder_fill_test1;
+       friend struct video_decoder_fill_test2;
 
        void seek (ContentTime time, bool accurate);
-       void video (boost::shared_ptr<const Image>, VideoFrame frame);
-       boost::optional<ContentVideo> decoded_video (VideoFrame frame);
+       void video (boost::shared_ptr<const ImageProxy>, VideoFrame frame);
+       std::list<ContentVideo> decoded_video (VideoFrame frame);
+       void fill_2d (VideoFrame from, VideoFrame to);
+       void fill_3d (VideoFrame from, VideoFrame to, Eyes);
 
        boost::shared_ptr<const VideoContent> _video_content;
        std::list<ContentVideo> _decoded_video;
+       bool _same;
+       boost::shared_ptr<Image> _black_image;
+       boost::optional<ContentTime> _last_seek_time;
+       bool _last_seek_accurate;
 };
 
 #endif