21 #ifndef SWSCALE_SWSCALE_H 22 #define SWSCALE_SWSCALE_H 58 #define SWS_FAST_BILINEAR 1 59 #define SWS_BILINEAR 2 62 #define SWS_POINT 0x10 64 #define SWS_BICUBLIN 0x40 65 #define SWS_GAUSS 0x80 66 #define SWS_SINC 0x100 67 #define SWS_LANCZOS 0x200 68 #define SWS_SPLINE 0x400 70 #define SWS_SRC_V_CHR_DROP_MASK 0x30000 71 #define SWS_SRC_V_CHR_DROP_SHIFT 16 73 #define SWS_PARAM_DEFAULT 123456 75 #define SWS_PRINT_INFO 0x1000 79 #define SWS_FULL_CHR_H_INT 0x2000 81 #define SWS_FULL_CHR_H_INP 0x4000 82 #define SWS_DIRECT_BGR 0x8000 83 #define SWS_ACCURATE_RND 0x40000 84 #define SWS_BITEXACT 0x80000 85 #define SWS_ERROR_DIFFUSION 0x800000 87 #define SWS_MAX_REDUCE_CUTOFF 0.002 89 #define SWS_CS_ITU709 1 91 #define SWS_CS_ITU601 5 92 #define SWS_CS_ITU624 5 93 #define SWS_CS_SMPTE170M 5 94 #define SWS_CS_SMPTE240M 7 95 #define SWS_CS_DEFAULT 5 96 #define SWS_CS_BT2020 9 218 const int srcStride[],
int srcSliceY,
int srcSliceH,
219 uint8_t *
const dst[],
const int dstStride[]);
263 #if FF_API_SWS_VECTOR 277 float lumaSharpen,
float chromaSharpen,
278 float chromaHShift,
float chromaVShift,
int sws_isSupportedOutput(enum AVPixelFormat pix_fmt)
Return a positive value if pix_fmt is a supported output format, 0 otherwise.
static enum AVPixelFormat pix_fmt
static int shift(int a, int b)
void sws_convertPalette8ToPacked32(const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette)
Convert an 8-bit paletted frame into a frame with a color depth of 32 bits.
void sws_convertPalette8ToPacked24(const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette)
Convert an 8-bit paletted frame into a frame with a color depth of 24 bits.
int sws_getColorspaceDetails(struct SwsContext *c, int **inv_table, int *srcRange, int **table, int *dstRange, int *brightness, int *contrast, int *saturation)
SwsVector * sws_getGaussianVec(double variance, double quality)
Return a normalized Gaussian curve used to filter stuff quality = 3 is high quality, lower is lower quality.
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
Convenience header that includes libavutil's core.
int sws_isSupportedEndiannessConversion(enum AVPixelFormat pix_fmt)
const char * swscale_configuration(void)
Return the libswscale build-time configuration.
int srcRange
0 = MPG YUV range, 1 = JPG YUV range (source image).
const AVClass * sws_get_class(void)
Get the AVClass for swsContext.
int srcH
Height of source luma/alpha planes.
attribute_deprecated void sws_convVec(SwsVector *a, SwsVector *b)
int length
number of coefficients in the vector
av_warn_unused_result int sws_init_context(struct SwsContext *sws_context, SwsFilter *srcFilter, SwsFilter *dstFilter)
Initialize the swscaler context sws_context.
attribute_deprecated SwsVector * sws_cloneVec(SwsVector *a)
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
attribute_deprecated SwsVector * sws_getConstVec(double c, int length)
Allocate and return a vector with length coefficients, all with the same value c. ...
struct SwsContext * sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat, int dstW, int dstH, enum AVPixelFormat dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param)
Allocate and return an SwsContext.
enum AVPixelFormat dstFormat
Destination pixel format.
static const uint16_t table[]
int dstH
Height of destination luma/alpha planes.
SwsFilter * sws_getDefaultFilter(float lumaGBlur, float chromaGBlur, float lumaSharpen, float chromaSharpen, float chromaHShift, float chromaVShift, int verbose)
filter_frame For filters that do not use the this method is called when a frame is pushed to the filter s input It can be called at any time except in a reentrant way If the input frame is enough to produce then the filter should push the output frames on the output link immediately As an exception to the previous rule if the input frame is enough to produce several output frames then the filter needs output only at least one per link The additional frames can be left buffered in the filter
attribute_deprecated void sws_subVec(SwsVector *a, SwsVector *b)
attribute_deprecated void sws_printVec2(SwsVector *a, AVClass *log_ctx, int log_level)
Print with av_log() a textual representation of the vector a if log_level <= av_log_level.
void sws_scaleVec(SwsVector *a, double scalar)
Scale all the coefficients of a by the scalar value.
void sws_normalizeVec(SwsVector *a, double height)
Scale all the coefficients of a so that their sum equals height.
struct SwsContext * sws_getCachedContext(struct SwsContext *context, int srcW, int srcH, enum AVPixelFormat srcFormat, int dstW, int dstH, enum AVPixelFormat dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param)
Check if context can be reused, otherwise reallocate a new one.
void sws_freeFilter(SwsFilter *filter)
SwsVector * sws_allocVec(int length)
Allocate and return an uninitialized vector with length coefficients.
int dstRange
0 = MPG YUV range, 1 = JPG YUV range (destination image).
attribute_deprecated void sws_shiftVec(SwsVector *a, int shift)
trying all byte sequences megabyte in length and selecting the best looking sequence will yield cases to try But a word about quality
void sws_freeContext(struct SwsContext *swsContext)
Free the swscaler context swsContext.
const int * sws_getCoefficients(int colorspace)
Return a pointer to yuv<->rgb coefficients for the given colorspace suitable for sws_setColorspaceDet...
unsigned swscale_version(void)
int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4], int srcRange, const int table[4], int dstRange, int brightness, int contrast, int saturation)
int dstW
Width of destination luma/alpha planes.
double * coeff
pointer to the list of coefficients
void sws_freeVec(SwsVector *a)
int sws_scale(struct SwsContext *c, const uint8_t *const srcSlice[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[])
Scale the image slice in srcSlice and put the resulting scaled slice in the image in dst...
Describe the class of an AVClass context structure.
struct SwsContext * sws_alloc_context(void)
Allocate an empty SwsContext.
#define flags(name, subs,...)
#define attribute_deprecated
#define av_warn_unused_result
attribute_deprecated void sws_addVec(SwsVector *a, SwsVector *b)
double param[2]
Input parameters for scaling algorithms that need them.
enum AVPixelFormat srcFormat
Source pixel format.
int sws_isSupportedInput(enum AVPixelFormat pix_fmt)
Return a positive value if pix_fmt is a supported input format, 0 otherwise.
attribute_deprecated SwsVector * sws_getIdentityVec(void)
Allocate and return a vector with just one coefficient, with value 1.0.
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option keep it simple and lowercase description are in without and describe what they for example set the foo of the bar offset is the offset of the field in your local context
int srcW
Width of source luma/alpha planes.
AVPixelFormat
Pixel format.
const char * swscale_license(void)
Return the libswscale license.