Similar fix for scaling (#1416).
authorCarl Hetherington <cth@carlh.net>
Tue, 27 Nov 2018 23:33:23 +0000 (23:33 +0000)
committerCarl Hetherington <cth@carlh.net>
Tue, 27 Nov 2018 23:33:23 +0000 (23:33 +0000)
src/lib/player_video.cc
src/lib/player_video.h

index 1df8fb3e8745f370974b8c09740204a37d7da089..023ab826a8c4e12d7a66b094b6b45ea4afecefce 100644 (file)
@@ -105,10 +105,10 @@ PlayerVideo::set_text (PositionImage image)
 shared_ptr<Image>
 PlayerVideo::image (function<AVPixelFormat (AVPixelFormat)> pixel_format, bool aligned, bool fast) const
 {
-       /* XXX: this assumes that image() and prepare() are only ever called with the same parameters (except crop) */
+       /* XXX: this assumes that image() and prepare() are only ever called with the same parameters (except crop, inter size, out size) */
 
        boost::mutex::scoped_lock lm (_mutex);
-       if (!_image || _crop != _image_crop) {
+       if (!_image || _crop != _image_crop || _inter_size != _image_inter_size || _out_size != _image_out_size) {
                make_image (pixel_format, aligned, fast);
        }
        return _image;
@@ -125,6 +125,8 @@ void
 PlayerVideo::make_image (function<AVPixelFormat (AVPixelFormat)> pixel_format, bool aligned, bool fast) const
 {
        _image_crop = _crop;
+       _image_inter_size = _inter_size;
+       _image_out_size = _out_size;
 
        pair<shared_ptr<Image>, int> prox = _in->image (_inter_size);
        shared_ptr<Image> im = prox.first;
index 1e214beeaaaf1fff6a1b9b06ba087f4b647f9d95..6275c5113c758bf18563e0475e8aaf38fb50fd27 100644 (file)
@@ -126,8 +126,12 @@ private:
 
        mutable boost::mutex _mutex;
        mutable boost::shared_ptr<Image> _image;
-       /** crop that was used to make _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;
 };
 
 #endif