When the player is used in OpenGL mode, pass unscaled XYZ data through to the shader...
[dcpomatic.git] / src / lib / player_video.cc
index e473b8750474a975f53c3fdf6f1521ec2407e1b8..0a6ce0d993cf08ac4f304288db60d42389feb418 100644 (file)
@@ -36,7 +36,6 @@ extern "C" {
 using std::cout;
 using std::dynamic_pointer_cast;
 using std::make_shared;
-using std::pair;
 using std::shared_ptr;
 using std::string;
 using std::weak_ptr;
@@ -122,6 +121,14 @@ PlayerVideo::image (function<AVPixelFormat (AVPixelFormat)> pixel_format, VideoR
        return _image;
 }
 
+
+shared_ptr<Image>
+PlayerVideo::raw_image () const
+{
+       return _in->image(_inter_size).image;
+}
+
+
 /** Create an image for this frame.  A lock must be held on _mutex.
  *  @param pixel_format Function which is called to decide what pixel format the output image should be;
  *  it is passed the pixel format of the input image from the ImageProxy, and should return the desired
@@ -231,7 +238,7 @@ PlayerVideo::has_j2k () const
                return false;
        }
 
-       return _crop == Crop() && _out_size == j2k->size() && !_text && !_fade && !_colour_conversion;
+       return _crop == Crop() && _out_size == j2k->size() && _inter_size == j2k->size() && !_text && !_fade && !_colour_conversion;
 }
 
 shared_ptr<const dcp::Data>
@@ -291,11 +298,11 @@ PlayerVideo::keep_xyz_or_rgb (AVPixelFormat p)
 }
 
 void
-PlayerVideo::prepare (function<AVPixelFormat (AVPixelFormat)> pixel_format, VideoRange video_range, bool aligned, bool fast)
+PlayerVideo::prepare (function<AVPixelFormat (AVPixelFormat)> pixel_format, VideoRange video_range, bool aligned, bool fast, bool proxy_only)
 {
        _in->prepare (_inter_size);
        boost::mutex::scoped_lock lm (_mutex);
-       if (!_image) {
+       if (!_image && !proxy_only) {
                make_image (pixel_format, video_range, aligned, fast);
        }
 }