#include <libavcodec/avcodec.h>
#include <libavfilter/avfilter.h>
}
+#include <libdcp/image.h>
#include "util.h"
#include "position.h"
class Scaler;
-class Image
+class Image : public libdcp::Image
{
public:
Image (AVPixelFormat, libdcp::Size, bool);
int line_factor (int) const;
int lines (int) const;
- boost::shared_ptr<Image> scale_and_convert_to_rgb (libdcp::Size, Scaler const *, bool) const;
- boost::shared_ptr<Image> scale (libdcp::Size, Scaler const *, bool aligned) const;
- boost::shared_ptr<Image> post_process (std::string, bool aligned) const;
- void alpha_blend (boost::shared_ptr<const Image> image, Position<int> pos);
- void copy (boost::shared_ptr<const Image> image, Position<int> pos);
+ boost::shared_ptr<Image> scale (libdcp::Size, Scaler const *, AVPixelFormat, bool aligned) const;
boost::shared_ptr<Image> crop (Crop c, bool aligned) const;
+
+ boost::shared_ptr<Image> crop_scale_window (Crop c, libdcp::Size, libdcp::Size, Scaler const *, AVPixelFormat, bool aligned) const;
void make_black ();
+ void alpha_blend (boost::shared_ptr<const Image> image, Position<int> pos);
+ void copy (boost::shared_ptr<const Image> image, Position<int> pos);
void read_from_socket (boost::shared_ptr<Socket>);
void write_to_socket (boost::shared_ptr<Socket>) const;
return _pixel_format;
}
+ std::string digest () const;
+
private:
friend class pixel_formats_test;
void allocate ();
void swap (Image &);
float bytes_per_pixel (int) const;
- void yuv_16_black (uint16_t);
+ void yuv_16_black (uint16_t, bool);
static uint16_t swap_16 (uint16_t);
AVPixelFormat _pixel_format; ///< FFmpeg's way of describing the pixel format of this Image
- libdcp::Size _size; ///< size in pixels
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)
int* _stride; ///< array of strides for each line (including any alignment padding bytes)