Some const correctness.
[dcpomatic.git] / src / lib / image.h
index adee8bc4d1e5196d9c3e086322b1e68c9c3b00c6..31035d272d99a33f4791ff210d0cff23db47e991 100644 (file)
@@ -65,9 +65,13 @@ public:
        /** @return Array of strides for each line (including any alignment padding bytes) */
        virtual int * stride () const = 0;
 
-       /** @return libdcp::Size of the image, in pixels */
+       /** @return Size of the image, in pixels */
        virtual libdcp::Size size () const = 0;
 
+       virtual bool aligned () const = 0;
+
+       virtual boost::shared_ptr<Image> clone () const = 0;
+
        int components () const;
        int lines (int) const;
 
@@ -90,7 +94,10 @@ protected:
        virtual void swap (Image &);
        float bytes_per_pixel (int) const;
 
-private:       
+private:
+       void yuv_16_black (uint16_t);
+       static uint16_t swap_16 (uint16_t);
+       
        AVPixelFormat _pixel_format; ///< FFmpeg's way of describing the pixel format of this Image
 };
 
@@ -107,13 +114,18 @@ public:
        int * line_size () const;
        int * stride () const;
        libdcp::Size size () const;
+       bool aligned () const;
 
 private:
        /* Not allowed */
        FilterBufferImage (FilterBufferImage const &);
        FilterBufferImage& operator= (FilterBufferImage const &);
+       boost::shared_ptr<Image> clone () const {
+               assert (false);
+       }
        
        AVFilterBufferRef* _buffer;
+       int* _line_size;
 };
 
 /** @class SimpleImage
@@ -131,6 +143,8 @@ public:
        int * line_size () const;
        int * stride () const;
        libdcp::Size size () const;
+       bool aligned () const;
+       boost::shared_ptr<Image> clone () const;
 
 protected:
        void allocate ();