Untested use of Frame for video/audio content lengths.
[dcpomatic.git] / src / lib / image.h
index 814ad1c5895a8c7d6edd8f5ed7563c4479c306cd..5c3931102af776c259965bf7fb9487a02370d193 100644 (file)
@@ -27,7 +27,7 @@
 #include "position.h"
 #include "position_image.h"
 #include "types.h"
-#include <dcp/image.h>
+#include <dcp/colour_conversion.h>
 extern "C" {
 #include <libavcodec/avcodec.h>
 #include <libavfilter/avfilter.h>
@@ -36,10 +36,9 @@ extern "C" {
 #include <boost/function.hpp>
 #include <string>
 
-class Scaler;
 class Socket;
 
-class Image : public dcp::Image
+class Image
 {
 public:
        Image (AVPixelFormat, dcp::Size, bool);
@@ -59,10 +58,9 @@ public:
        int line_factor (int) const;
        int lines (int) const;
 
-       boost::shared_ptr<Image> scale (dcp::Size, Scaler const *, AVPixelFormat, bool aligned) const;
+       boost::shared_ptr<Image> scale (dcp::Size, dcp::YUVToRGB yuv_to_rgb, AVPixelFormat, bool aligned) const;
        boost::shared_ptr<Image> crop (Crop c, bool aligned) const;
-
-       boost::shared_ptr<Image> crop_scale_window (Crop c, dcp::Size, dcp::Size, Scaler const *, AVPixelFormat, bool aligned) const;
+       boost::shared_ptr<Image> crop_scale_window (Crop c, dcp::Size, dcp::Size, dcp::YUVToRGB yuv_to_rgb, AVPixelFormat, bool aligned) const;
        
        void make_black ();
        void make_transparent ();
@@ -87,7 +85,8 @@ private:
        float bytes_per_pixel (int) const;
        void yuv_16_black (uint16_t, bool);
        static uint16_t swap_16 (uint16_t);
-       
+
+       dcp::Size _size;
        AVPixelFormat _pixel_format; ///< FFmpeg's way of describing the pixel format of this Image
        uint8_t** _data; ///< array of pointers to components
        int* _line_size; ///< array of sizes of the data in each line, in pixels (without any alignment padding bytes)