FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Files | Data Structures | Macros | Functions
Color conversion and scaling

Return the LIBSWSCALE_VERSION_INT constant. More...

Files

file  swscale.h
 external API header
 

Data Structures

struct  SwsVector
 
struct  SwsFilter
 

Macros

#define SWS_FAST_BILINEAR   1
 
#define SWS_BILINEAR   2
 
#define SWS_BICUBIC   4
 
#define SWS_X   8
 
#define SWS_POINT   0x10
 
#define SWS_AREA   0x20
 
#define SWS_BICUBLIN   0x40
 
#define SWS_GAUSS   0x80
 
#define SWS_SINC   0x100
 
#define SWS_LANCZOS   0x200
 
#define SWS_SPLINE   0x400
 
#define SWS_SRC_V_CHR_DROP_MASK   0x30000
 
#define SWS_SRC_V_CHR_DROP_SHIFT   16
 
#define SWS_PARAM_DEFAULT   123456
 
#define SWS_PRINT_INFO   0x1000
 
#define SWS_FULL_CHR_H_INT   0x2000
 
#define SWS_FULL_CHR_H_INP   0x4000
 
#define SWS_DIRECT_BGR   0x8000
 
#define SWS_ACCURATE_RND   0x40000
 
#define SWS_BITEXACT   0x80000
 
#define SWS_ERROR_DIFFUSION   0x800000
 
#define SWS_MAX_REDUCE_CUTOFF   0.002
 
#define SWS_CS_ITU709   1
 
#define SWS_CS_FCC   4
 
#define SWS_CS_ITU601   5
 
#define SWS_CS_ITU624   5
 
#define SWS_CS_SMPTE170M   5
 
#define SWS_CS_SMPTE240M   7
 
#define SWS_CS_DEFAULT   5
 

Functions

unsigned swscale_version (void)
 
const char * swscale_configuration (void)
 Return the libswscale build-time configuration. More...
 
const char * swscale_license (void)
 Return the libswscale license. More...
 
const int * sws_getCoefficients (int colorspace)
 Return a pointer to yuv<->rgb coefficients for the given colorspace suitable for sws_setColorspaceDetails(). More...
 
int sws_isSupportedInput (enum AVPixelFormat pix_fmt)
 Return a positive value if pix_fmt is a supported input format, 0 otherwise. More...
 
int sws_isSupportedOutput (enum AVPixelFormat pix_fmt)
 Return a positive value if pix_fmt is a supported output format, 0 otherwise. More...
 
int sws_isSupportedEndiannessConversion (enum AVPixelFormat pix_fmt)
 
struct SwsContextsws_alloc_context (void)
 Allocate an empty SwsContext. More...
 
av_warn_unused_result int sws_init_context (struct SwsContext *sws_context, SwsFilter *srcFilter, SwsFilter *dstFilter)
 Initialize the swscaler context sws_context. More...
 
void sws_freeContext (struct SwsContext *swsContext)
 Free the swscaler context swsContext. More...
 
struct SwsContextsws_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. More...
 
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. More...
 
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 sws_getColorspaceDetails (struct SwsContext *c, int **inv_table, int *srcRange, int **table, int *dstRange, int *brightness, int *contrast, int *saturation)
 
SwsVectorsws_allocVec (int length)
 Allocate and return an uninitialized vector with length coefficients. More...
 
SwsVectorsws_getGaussianVec (double variance, double quality)
 Return a normalized Gaussian curve used to filter stuff quality = 3 is high quality, lower is lower quality. More...
 
SwsVectorsws_getConstVec (double c, int length)
 Allocate and return a vector with length coefficients, all with the same value c. More...
 
SwsVectorsws_getIdentityVec (void)
 Allocate and return a vector with just one coefficient, with value 1.0. More...
 
void sws_scaleVec (SwsVector *a, double scalar)
 Scale all the coefficients of a by the scalar value. More...
 
void sws_normalizeVec (SwsVector *a, double height)
 Scale all the coefficients of a so that their sum equals height. More...
 
void sws_convVec (SwsVector *a, SwsVector *b)
 
void sws_addVec (SwsVector *a, SwsVector *b)
 
void sws_subVec (SwsVector *a, SwsVector *b)
 
void sws_shiftVec (SwsVector *a, int shift)
 
SwsVectorsws_cloneVec (SwsVector *a)
 Allocate and return a clone of the vector a, that is a vector with the same coefficients as a. More...
 
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. More...
 
void sws_freeVec (SwsVector *a)
 
SwsFiltersws_getDefaultFilter (float lumaGBlur, float chromaGBlur, float lumaSharpen, float chromaSharpen, float chromaHShift, float chromaVShift, int verbose)
 
void sws_freeFilter (SwsFilter *filter)
 
struct SwsContextsws_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. More...
 
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. More...
 
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. More...
 
const AVClasssws_get_class (void)
 Get the AVClass for swsContext. More...
 

Detailed Description

Return the LIBSWSCALE_VERSION_INT constant.

Macro Definition Documentation

#define SWS_FAST_BILINEAR   1
#define SWS_BILINEAR   2
#define SWS_BICUBIC   4

Definition at line 58 of file swscale.h.

Referenced by init(), initFilter(), output_single_frame(), selfTest(), and sws_init_context().

#define SWS_X   8

Definition at line 59 of file swscale.h.

Referenced by initFilter(), selfTest(), and sws_init_context().

#define SWS_POINT   0x10

Definition at line 60 of file swscale.h.

Referenced by ff_get_unscaled_swscale(), init(), initFilter(), selfTest(), and sws_init_context().

#define SWS_AREA   0x20

Definition at line 61 of file swscale.h.

Referenced by initFilter(), selfTest(), and sws_init_context().

#define SWS_BICUBLIN   0x40

Definition at line 62 of file swscale.h.

Referenced by sws_init_context().

#define SWS_GAUSS   0x80

Definition at line 63 of file swscale.h.

Referenced by initFilter(), and sws_init_context().

#define SWS_SINC   0x100

Definition at line 64 of file swscale.h.

Referenced by initFilter(), and sws_init_context().

#define SWS_LANCZOS   0x200

Definition at line 65 of file swscale.h.

Referenced by initFilter(), and sws_init_context().

#define SWS_SPLINE   0x400

Definition at line 66 of file swscale.h.

Referenced by initFilter(), and sws_init_context().

#define SWS_SRC_V_CHR_DROP_MASK   0x30000

Definition at line 68 of file swscale.h.

Referenced by sws_init_context().

#define SWS_SRC_V_CHR_DROP_SHIFT   16

Definition at line 69 of file swscale.h.

Referenced by sws_init_context().

#define SWS_PARAM_DEFAULT   123456

Definition at line 71 of file swscale.h.

Referenced by initFilter(), and sws_getCachedContext().

#define SWS_PRINT_INFO   0x1000

Definition at line 73 of file swscale.h.

Referenced by initFilter(), sws_init_context(), and swscale().

#define SWS_FULL_CHR_H_INT   0x2000
#define SWS_FULL_CHR_H_INP   0x4000

Definition at line 79 of file swscale.h.

Referenced by sws_init_context().

#define SWS_DIRECT_BGR   0x8000

Definition at line 80 of file swscale.h.

#define SWS_ACCURATE_RND   0x40000
#define SWS_BITEXACT   0x80000
#define SWS_ERROR_DIFFUSION   0x800000

Definition at line 83 of file swscale.h.

Referenced by sws_init_context().

#define SWS_MAX_REDUCE_CUTOFF   0.002

Definition at line 85 of file swscale.h.

Referenced by initFilter().

#define SWS_CS_ITU709   1

Definition at line 87 of file swscale.h.

#define SWS_CS_FCC   4

Definition at line 88 of file swscale.h.

#define SWS_CS_ITU601   5

Definition at line 89 of file swscale.h.

#define SWS_CS_ITU624   5

Definition at line 90 of file swscale.h.

#define SWS_CS_SMPTE170M   5

Definition at line 91 of file swscale.h.

#define SWS_CS_SMPTE240M   7

Definition at line 92 of file swscale.h.

#define SWS_CS_DEFAULT   5

Definition at line 93 of file swscale.h.

Referenced by sws_getCoefficients().

Function Documentation

unsigned swscale_version ( void  )

Definition at line 61 of file utils.c.

const char* swscale_configuration ( void  )

Return the libswscale build-time configuration.

Definition at line 67 of file utils.c.

const char* swscale_license ( void  )

Return the libswscale license.

Definition at line 72 of file utils.c.

const int* sws_getCoefficients ( int  colorspace)

Return a pointer to yuv<->rgb coefficients for the given colorspace suitable for sws_setColorspaceDetails().

Parameters
colorspaceOne of the SWS_CS_* macros. If invalid, SWS_CS_DEFAULT is used.

Definition at line 60 of file yuv2rgb.c.

Referenced by parse_yuv_type().

int sws_isSupportedInput ( enum AVPixelFormat  pix_fmt)

Return a positive value if pix_fmt is a supported input format, 0 otherwise.

Definition at line 235 of file utils.c.

Referenced by sws_init_context().

int sws_isSupportedOutput ( enum AVPixelFormat  pix_fmt)

Return a positive value if pix_fmt is a supported output format, 0 otherwise.

Definition at line 241 of file utils.c.

Referenced by sws_init_context().

int sws_isSupportedEndiannessConversion ( enum AVPixelFormat  pix_fmt)
Parameters
[in]pix_fmtthe pixel format
Returns
a positive value if an endianness conversion for pix_fmt is supported, 0 otherwise.

Definition at line 247 of file utils.c.

Referenced by query_formats(), and sws_init_context().

struct SwsContext* sws_alloc_context ( void  )

Allocate an empty SwsContext.

This must be filled and passed to sws_init_context(). For filling see AVOptions, options.c and sws_setColorspaceDetails().

Definition at line 1043 of file utils.c.

Referenced by config_props(), opt_default(), output_single_frame(), sws_alloc_set_opts(), and sws_getCachedContext().

av_warn_unused_result int sws_init_context ( struct SwsContext sws_context,
SwsFilter srcFilter,
SwsFilter dstFilter 
)

Initialize the swscaler context sws_context.

Returns
zero or positive value on success, a negative value on error

Definition at line 1123 of file utils.c.

Referenced by config_props(), output_single_frame(), sws_getCachedContext(), sws_getContext(), and sws_setColorspaceDetails().

void sws_freeContext ( struct SwsContext swsContext)

Free the swscaler context swsContext.

If swsContext is NULL, then does nothing.

Examples:
muxing.c, and scaling_video.c.

Definition at line 2267 of file utils.c.

Referenced by close_filter_param(), close_stream(), config_props(), doTest(), ff_scale_image(), main(), opt_default(), output_single_frame(), request_frame(), stream_close(), sws_getCachedContext(), sws_getContext(), sws_init_context(), and uninit().

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.

You need it to perform scaling/conversion operations using sws_scale().

Parameters
srcWthe width of the source image
srcHthe height of the source image
srcFormatthe source image format
dstWthe width of the destination image
dstHthe height of the destination image
dstFormatthe destination image format
flagsspecify which algorithm and options to use for rescaling
paramextra parameters to tune the used scaler For SWS_BICUBIC param[0] and [1] tune the shape of the basis function, param[0] tunes f(1) and param[1] f´(1) For SWS_GAUSS param[0] tunes the exponent and thus cutoff frequency For SWS_LANCZOS param[0] tunes the width of the window function
Returns
a pointer to an allocated context, or NULL in case of error
Note
this function is to be removed after a saner alternative is written
Examples:
muxing.c, and scaling_video.c.

Definition at line 1880 of file utils.c.

Referenced by doTest(), ff_scale_image(), main(), open_filter_param(), sws_init_context(), and sws_setColorspaceDetails().

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.

A slice is a sequence of consecutive rows in an image.

Slices have to be provided in sequential order, either in top-bottom or bottom-top order. If slices are provided in non-sequential order the behavior of the function is undefined.

Parameters
cthe scaling context previously created with sws_getContext()
srcSlicethe array containing the pointers to the planes of the source slice
srcStridethe array containing the strides for each plane of the source image
srcSliceYthe position in the source image of the slice to process, that is the number (counted starting from zero) in the image of the first row of the slice
srcSliceHthe height of the source slice, that is the number of rows in the slice
dstthe array containing the pointers to the planes of the destination image
dstStridethe array containing the strides for each plane of the destination image
Returns
the height of the output slice

Scale the image slice in srcSlice and put the resulting scaled slice in the image in dst.

Assumes planar YUV to be in YUV order instead of YVU.

Definition at line 1041 of file swscale.c.

Referenced by blur(), doTest(), ff_scale_image(), main(), output_single_frame(), queue_picture(), scale_slice(), subtitle_thread(), sws_scale(), and wrap().

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 
)
Parameters
dstRangeflag indicating the while-black range of the output (1=jpeg / 0=mpeg)
srcRangeflag indicating the while-black range of the input (1=jpeg / 0=mpeg)
tablethe yuv2rgb coefficients describing the output yuv space, normally ff_yuv2rgb_coeffs[x]
inv_tablethe yuv2rgb coefficients describing the input yuv space, normally ff_yuv2rgb_coeffs[x]
brightness16.16 fixed point brightness correction
contrast16.16 fixed point contrast correction
saturation16.16 fixed point saturation correction
Returns
-1 if not supported

Definition at line 830 of file utils.c.

Referenced by filter_frame(), and sws_init_context().

int sws_getColorspaceDetails ( struct SwsContext c,
int **  inv_table,
int *  srcRange,
int **  table,
int *  dstRange,
int *  brightness,
int *  contrast,
int *  saturation 
)
Returns
-1 if not supported

Definition at line 965 of file utils.c.

Referenced by filter_frame().

SwsVector* sws_allocVec ( int  length)

Allocate and return an uninitialized vector with length coefficients.

Definition at line 2000 of file utils.c.

Referenced by sws_cloneVec(), sws_getConstVec(), and sws_getGaussianVec().

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.

Definition at line 2017 of file utils.c.

Referenced by alloc_sws_context(), open_filter_param(), and sws_getDefaultFilter().

SwsVector* sws_getConstVec ( double  c,
int  length 
)

Allocate and return a vector with length coefficients, all with the same value c.

Definition at line 2043 of file utils.c.

Referenced by sws_diffVec(), sws_getConvVec(), sws_getIdentityVec(), sws_getShiftedVec(), and sws_sumVec().

SwsVector* sws_getIdentityVec ( void  )

Allocate and return a vector with just one coefficient, with value 1.0.

Definition at line 2057 of file utils.c.

Referenced by sws_getDefaultFilter().

void sws_scaleVec ( SwsVector a,
double  scalar 
)

Scale all the coefficients of a by the scalar value.

Definition at line 2073 of file utils.c.

Referenced by alloc_sws_context(), sws_getDefaultFilter(), and sws_normalizeVec().

void sws_normalizeVec ( SwsVector a,
double  height 
)

Scale all the coefficients of a so that their sum equals height.

Definition at line 2081 of file utils.c.

Referenced by sws_getDefaultFilter(), and sws_getGaussianVec().

void sws_convVec ( SwsVector a,
SwsVector b 
)

Definition at line 2195 of file utils.c.

void sws_addVec ( SwsVector a,
SwsVector b 
)

Definition at line 2169 of file utils.c.

Referenced by sws_getDefaultFilter().

void sws_subVec ( SwsVector a,
SwsVector b 
)

Definition at line 2182 of file utils.c.

void sws_shiftVec ( SwsVector a,
int  shift 
)

Definition at line 2156 of file utils.c.

Referenced by sws_getDefaultFilter().

SwsVector* sws_cloneVec ( SwsVector a)

Allocate and return a clone of the vector a, that is a vector with the same coefficients as a.

Definition at line 2208 of file utils.c.

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.

Definition at line 2220 of file utils.c.

Referenced by sws_getDefaultFilter().

void sws_freeVec ( SwsVector a)
SwsFilter* sws_getDefaultFilter ( float  lumaGBlur,
float  chromaGBlur,
float  lumaSharpen,
float  chromaSharpen,
float  chromaHShift,
float  chromaVShift,
int  verbose 
)

Definition at line 1917 of file utils.c.

void sws_freeFilter ( SwsFilter filter)

Definition at line 2255 of file utils.c.

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.

If context is NULL, just calls sws_getContext() to get a new context. Otherwise, checks if the parameters are the ones already saved in context. If that is the case, returns the current context. Otherwise, frees context and gets a new context with the new parameters.

Be warned that srcFilter and dstFilter are not checked, they are assumed to remain the same.

Definition at line 2346 of file utils.c.

Referenced by alloc_sws_context(), queue_picture(), and subtitle_thread().

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.

The output frame will have the same packed format as the palette.

Parameters
srcsource frame buffer
dstdestination frame buffer
num_pixelsnumber of pixels to convert
palettearray with [256] entries, which must match color arrangement (RGB or BGR) of src

Definition at line 1782 of file swscale_unscaled.c.

Referenced by palToRgbWrapper().

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.

With the palette format "ABCD", the destination frame ends up with the format "ABC".

Parameters
srcsource frame buffer
dstdestination frame buffer
num_pixelsnumber of pixels to convert
palettearray with [256] entries, which must match color arrangement (RGB or BGR) of src

Definition at line 1792 of file swscale_unscaled.c.

Referenced by palToRgbWrapper().

const AVClass* sws_get_class ( void  )

Get the AVClass for swsContext.

It can be used in combination with AV_OPT_SEARCH_FAKE_OBJ for examining options.

See Also
av_opt_find().

Definition at line 95 of file options.c.

Referenced by child_class_next(), init_dict(), opt_default(), queue_picture(), and show_help_default().