X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fimage.h;h=dde42f1bc2add86b228e7d0847a42d50830c0956;hb=f1d209319f90adc50e0f3d2a853216052f290bd5;hp=7c5f50a622f9b9c07aaaf8b465387088c06b2f59;hpb=14e4bc18e65378332604016bd6239861a083d5bf;p=dcpomatic.git diff --git a/src/lib/image.h b/src/lib/image.h index 7c5f50a62..dde42f1bc 100644 --- a/src/lib/image.h +++ b/src/lib/image.h @@ -1,19 +1,20 @@ /* - Copyright (C) 2012 Carl Hetherington + Copyright (C) 2012-2016 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ @@ -27,6 +28,9 @@ #include "position.h" #include "position_image.h" #include "types.h" +extern "C" { +#include +} #include #include @@ -36,7 +40,7 @@ class Socket; class Image { public: - Image (AVPixelFormat, dcp::Size, bool); + Image (AVPixelFormat p, dcp::Size s, bool aligned, int extra_pixels = 0); Image (AVFrame *); Image (Image const &); Image (boost::shared_ptr, bool); @@ -50,12 +54,14 @@ public: bool aligned () const; int planes () const; - int components () const; - int line_factor (int) const; + int vertical_factor (int) const; + int horizontal_factor (int) const; dcp::Size sample_size (int) const; - boost::shared_ptr scale (dcp::Size, dcp::YUVToRGB yuv_to_rgb, AVPixelFormat, bool aligned) const; - boost::shared_ptr crop_scale_window (Crop c, dcp::Size, dcp::Size, dcp::YUVToRGB yuv_to_rgb, AVPixelFormat, bool aligned) const; + boost::shared_ptr scale (dcp::Size out_size, dcp::YUVToRGB yuv_to_rgb, AVPixelFormat out_format, bool aligned, bool fast) const; + boost::shared_ptr crop_scale_window ( + Crop crop, dcp::Size inter_size, dcp::Size out_size, dcp::YUVToRGB yuv_to_rgb, AVPixelFormat out_format, bool aligned, bool fast + ) const; void make_black (); void make_transparent (); @@ -82,9 +88,10 @@ private: 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) - int* _stride; ///< array of strides for each line (including any alignment padding bytes) + int* _line_size; ///< array of sizes of the data in each line, in bytes (without any alignment padding bytes) + int* _stride; ///< array of strides for each line, in bytes (including any alignment padding bytes) bool _aligned; + int _extra_pixels; }; extern PositionImage merge (std::list images);