utils.c File Reference
#include <inttypes.h>
#include <string.h>
#include <math.h>
#include <stdio.h>
#include "config.h"
#include <assert.h>
#include "swscale.h"
#include "swscale_internal.h"
#include "rgb2rgb.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/x86_cpu.h"
#include "libavutil/cpu.h"
#include "libavutil/avutil.h"
#include "libavutil/bswap.h"
#include "libavutil/mathematics.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"

Go to the source code of this file.

Data Structures

struct  FormatEntry

Macros

#define _SVID_SOURCE
#define LICENSE_PREFIX   "libswscale license: "
#define RET   0xC3

Typedefs

typedef struct FormatEntry FormatEntry

Functions

unsigned swscale_version (void)
 Return the LIBSWSCALE_VERSION_INT constant.
const char * swscale_configuration (void)
 Return the libswscale build-time configuration.
const char * swscale_license (void)
 Return the libswscale license.
int sws_isSupportedInput (enum PixelFormat pix_fmt)
 Return a positive value if pix_fmt is a supported input format, 0 otherwise.
int sws_isSupportedOutput (enum PixelFormat pix_fmt)
 Return a positive value if pix_fmt is a supported output format, 0 otherwise.
const char * sws_format_name (enum PixelFormat format)
static double getSplineCoeff (double a, double b, double c, double d, double dist)
static int initFilter (int16_t **outFilter, int32_t **filterPos, int *outFilterSize, int xInc, int srcW, int dstW, int filterAlign, int one, int flags, int cpu_flags, SwsVector *srcFilter, SwsVector *dstFilter, double param[2], int is_horizontal)
static int initMMX2HScaler (int dstW, int xInc, uint8_t *filterCode, int16_t *filter, int32_t *filterPos, int numSplits)
static void getSubSampleFactors (int *h, int *v, enum PixelFormat format)
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)
static int handle_jpeg (enum PixelFormat *format)
SwsContextsws_alloc_context (void)
 Allocate an empty SwsContext.
int sws_init_context (SwsContext *c, SwsFilter *srcFilter, SwsFilter *dstFilter)
 Initialize the swscaler context sws_context.
SwsContextsws_getContext (int srcW, int srcH, enum PixelFormat srcFormat, int dstW, int dstH, enum PixelFormat dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param)
 Allocate and return an SwsContext.
SwsFiltersws_getDefaultFilter (float lumaGBlur, float chromaGBlur, float lumaSharpen, float chromaSharpen, float chromaHShift, float chromaVShift, int verbose)
SwsVectorsws_allocVec (int length)
 Allocate and return an uninitialized vector with length coefficients.
SwsVectorsws_getGaussianVec (double variance, double quality)
 Return a normalized Gaussian curve used to filter stuff quality = 3 is high quality, lower is lower quality.
SwsVectorsws_getConstVec (double c, int length)
 Allocate and return a vector with length coefficients, all with the same value c.
SwsVectorsws_getIdentityVec (void)
 Allocate and return a vector with just one coefficient, with value 1.0.
static double sws_dcVec (SwsVector *a)
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.
static SwsVectorsws_getConvVec (SwsVector *a, SwsVector *b)
static SwsVectorsws_sumVec (SwsVector *a, SwsVector *b)
static SwsVectorsws_diffVec (SwsVector *a, SwsVector *b)
static SwsVectorsws_getShiftedVec (SwsVector *a, int shift)
void sws_shiftVec (SwsVector *a, int shift)
void sws_addVec (SwsVector *a, SwsVector *b)
void sws_subVec (SwsVector *a, SwsVector *b)
void sws_convVec (SwsVector *a, SwsVector *b)
SwsVectorsws_cloneVec (SwsVector *a)
 Allocate and return a clone of the vector a, that is a vector with the same coefficients as a.
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_freeVec (SwsVector *a)
void sws_freeFilter (SwsFilter *filter)
void sws_freeContext (SwsContext *c)
 Free the swscaler context swsContext.
struct SwsContextsws_getCachedContext (struct SwsContext *context, int srcW, int srcH, enum PixelFormat srcFormat, int dstW, int dstH, enum PixelFormat dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param)
 Check if context can be reused, otherwise reallocate a new one.

Variables

static const FormatEntry format_entries [PIX_FMT_NB]
const int32_t ff_yuv2rgb_coeffs [8][4]

Macro Definition Documentation

#define _SVID_SOURCE

Definition at line 21 of file utils.c.

#define LICENSE_PREFIX   "libswscale license: "
#define RET   0xC3

Definition at line 66 of file utils.c.

Referenced by initMMX2HScaler().

Typedef Documentation

typedef struct FormatEntry FormatEntry

Function Documentation

static double getSplineCoeff ( double  a,
double  b,
double  c,
double  d,
double  dist 
)
static

Definition at line 173 of file utils.c.

Referenced by initFilter().

static void getSubSampleFactors ( int *  h,
int *  v,
enum PixelFormat  format 
)
static

Definition at line 687 of file utils.c.

Referenced by sws_init_context().

static int handle_jpeg ( enum PixelFormat format)
static

Definition at line 735 of file utils.c.

Referenced by sws_getCachedContext(), and sws_getContext().

static int initFilter ( int16_t **  outFilter,
int32_t **  filterPos,
int *  outFilterSize,
int  xInc,
int  srcW,
int  dstW,
int  filterAlign,
int  one,
int  flags,
int  cpu_flags,
SwsVector srcFilter,
SwsVector dstFilter,
double  param[2],
int  is_horizontal 
)
static

Definition at line 183 of file utils.c.

Referenced by sws_init_context().

static int initMMX2HScaler ( int  dstW,
int  xInc,
uint8_t *  filterCode,
int16_t *  filter,
int32_t *  filterPos,
int  numSplits 
)
static

Definition at line 528 of file utils.c.

Referenced by sws_init_context().

void sws_addVec ( SwsVector a,
SwsVector b 
)

Definition at line 1349 of file utils.c.

Referenced by sws_getDefaultFilter().

SwsContext* sws_alloc_context ( void  )
read

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 746 of file utils.c.

Referenced by sws_getCachedContext(), and sws_getContext().

SwsVector* sws_allocVec ( int  length)

Allocate and return an uninitialized vector with length coefficients.

Definition at line 1200 of file utils.c.

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

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 1376 of file utils.c.

void sws_convVec ( SwsVector a,
SwsVector b 
)

Definition at line 1367 of file utils.c.

static double sws_dcVec ( SwsVector a)
static

Definition at line 1251 of file utils.c.

Referenced by sws_normalizeVec().

static SwsVector* sws_diffVec ( SwsVector a,
SwsVector b 
)
static

Definition at line 1308 of file utils.c.

Referenced by sws_subVec().

const char* sws_format_name ( enum PixelFormat  format)
void sws_freeContext ( struct SwsContext swsContext)

Free the swscaler context swsContext.

If swsContext is NULL, then does nothing.

Definition at line 1431 of file utils.c.

Referenced by config_props(), do_video_out(), do_video_resample(), doTest(), main(), stream_close(), sws_getCachedContext(), sws_getContext(), transcode(), uninit(), and uninit_opts().

void sws_freeFilter ( SwsFilter filter)

Definition at line 1420 of file utils.c.

void sws_freeVec ( SwsVector a)

Definition at line 1412 of file utils.c.

Referenced by sws_freeFilter(), and sws_getDefaultFilter().

struct SwsContext* sws_getCachedContext ( struct SwsContext context,
int  srcW,
int  srcH,
enum PixelFormat  srcFormat,
int  dstW,
int  dstH,
enum PixelFormat  dstFormat,
int  flags,
SwsFilter srcFilter,
SwsFilter dstFilter,
const double *  param 
)
read

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 1490 of file utils.c.

Referenced by queue_picture().

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 718 of file utils.c.

SwsVector* sws_getConstVec ( double  c,
int  length 
)

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

Definition at line 1232 of file utils.c.

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

SwsContext* sws_getContext ( int  srcW,
int  srcH,
enum PixelFormat  srcFormat,
int  dstW,
int  dstH,
enum PixelFormat  dstFormat,
int  flags,
SwsFilter srcFilter,
SwsFilter dstFilter,
const double *  param 
)
read

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
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
Deprecated:
Use sws_getCachedContext() instead.

Definition at line 1106 of file utils.c.

Referenced by config_props(), do_video_out(), do_video_resample(), doTest(), init_opts(), main(), transcode(), transcode_init(), and write_video_frame().

static SwsVector* sws_getConvVec ( SwsVector a,
SwsVector b 
)
static

Definition at line 1275 of file utils.c.

Referenced by sws_convVec().

SwsFilter* sws_getDefaultFilter ( float  lumaGBlur,
float  chromaGBlur,
float  lumaSharpen,
float  chromaSharpen,
float  chromaHShift,
float  chromaVShift,
int  verbose 
)

Definition at line 1140 of file utils.c.

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 1212 of file utils.c.

Referenced by sws_getDefaultFilter().

SwsVector* sws_getIdentityVec ( void  )

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

Definition at line 1246 of file utils.c.

Referenced by sws_getDefaultFilter().

static SwsVector* sws_getShiftedVec ( SwsVector a,
int  shift 
)
static

Definition at line 1324 of file utils.c.

Referenced by sws_shiftVec().

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 756 of file utils.c.

Referenced by sws_getCachedContext(), and sws_getContext().

int sws_isSupportedInput ( enum PixelFormat  pix_fmt)

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

Definition at line 151 of file utils.c.

int sws_isSupportedOutput ( enum PixelFormat  pix_fmt)

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

Definition at line 157 of file utils.c.

void sws_normalizeVec ( SwsVector a,
double  height 
)

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

Definition at line 1270 of file utils.c.

Referenced by sws_getDefaultFilter(), and sws_getGaussianVec().

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 1389 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 1262 of file utils.c.

Referenced by sws_getDefaultFilter(), and sws_normalizeVec().

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
inv_tablethe yuv2rgb coefficients, normally ff_yuv2rgb_coeffs[x]
Returns
-1 if not supported

Definition at line 693 of file utils.c.

Referenced by sws_getCachedContext(), and sws_getContext().

void sws_shiftVec ( SwsVector a,
int  shift 
)

Definition at line 1340 of file utils.c.

Referenced by sws_getDefaultFilter().

void sws_subVec ( SwsVector a,
SwsVector b 
)

Definition at line 1358 of file utils.c.

static SwsVector* sws_sumVec ( SwsVector a,
SwsVector b 
)
static

Definition at line 1293 of file utils.c.

Referenced by sws_addVec().

const char* swscale_configuration ( void  )

Return the libswscale build-time configuration.

Definition at line 55 of file utils.c.

const char* swscale_license ( void  )

Return the libswscale license.

Definition at line 60 of file utils.c.

unsigned swscale_version ( void  )

Return the LIBSWSCALE_VERSION_INT constant.

Definition at line 50 of file utils.c.

Variable Documentation

const int32_t ff_yuv2rgb_coeffs[8][4]

Definition at line 43 of file yuv2rgb.c.

Referenced by sws_getCachedContext(), sws_getCoefficients(), and sws_getContext().

const FormatEntry format_entries[PIX_FMT_NB]
static

Definition at line 72 of file utils.c.