X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fplayer_video.h;h=c38d60641f71f499210ccf41ed577f1abec65e09;hb=b609165c39b8d6772d1c4fe2238c3bd66b70c787;hp=8e41e8f2371dc5dff5d504aabf65fad32acca172;hpb=ed68bfad5c795afb342c5228f3c1dc7770a6d646;p=dcpomatic.git diff --git a/src/lib/player_video.h b/src/lib/player_video.h index 8e41e8f23..c38d60641 100644 --- a/src/lib/player_video.h +++ b/src/lib/player_video.h @@ -31,9 +31,11 @@ extern "C" { } #include #include +#include class Image; class ImageProxy; +class Film; class Socket; /** Everything needed to describe a video frame coming out of the player, but with the @@ -62,7 +64,7 @@ public: void set_text (PositionImage); - void prepare (); + void prepare (boost::function pixel_format, bool aligned, bool fast); boost::shared_ptr image (boost::function pixel_format, bool aligned, bool fast) const; static AVPixelFormat force (AVPixelFormat, AVPixelFormat); @@ -71,7 +73,7 @@ public: void add_metadata (xmlpp::Node* node) const; void send_binary (boost::shared_ptr socket) const; - bool reset_metadata (dcp::Size video_container_size, dcp::Size film_frame_size); + bool reset_metadata (boost::shared_ptr film, dcp::Size video_container_size, dcp::Size film_frame_size); bool has_j2k () const; dcp::Data j2k () const; @@ -105,6 +107,8 @@ public: } private: + void make_image (boost::function pixel_format, bool aligned, bool fast) const; + boost::shared_ptr _in; Crop _crop; boost::optional _fade; @@ -120,6 +124,17 @@ private: boost::weak_ptr _content; /** Video frame that we came from. Again, this is for reset_metadata() */ boost::optional _video_frame; + + mutable boost::mutex _mutex; + mutable boost::shared_ptr _image; + /** _crop that was used to make _image */ + mutable Crop _image_crop; + /** _inter_size that was used to make _image */ + mutable dcp::Size _image_inter_size; + /** _out_size that was used to make _image */ + mutable dcp::Size _image_out_size; + /** _fade that was used to make _image */ + mutable boost::optional _image_fade; }; #endif