FFmpeg
Data Structures | Macros | Functions | Variables
utils.c File Reference
#include "config.h"
#include <inttypes.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include "libavutil/attributes.h"
#include "libavutil/avassert.h"
#include "libavutil/cpu.h"
#include "libavutil/imgutils.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/libm.h"
#include "libavutil/mathematics.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/slicethread.h"
#include "libavutil/thread.h"
#include "libavutil/aarch64/cpu.h"
#include "libavutil/ppc/cpu.h"
#include "libavutil/x86/asm.h"
#include "libavutil/x86/cpu.h"
#include "libavutil/loongarch/cpu.h"
#include "rgb2rgb.h"
#include "swscale.h"
#include "swscale_internal.h"

Go to the source code of this file.

Data Structures

struct  FormatEntry
 
struct  ScaleAlgorithm
 

Macros

#define _DEFAULT_SOURCE
 
#define _SVID_SOURCE
 
#define _DARWIN_C_SOURCE
 
#define USE_MMAP   0
 

Functions

int ff_shuffle_filter_coefficients (SwsContext *c, int *filterPos, int filterSize, int16_t *filter, int dstW)
 
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)
 
static double getSplineCoeff (double a, double b, double c, double d, double dist)
 
static av_cold int get_local_pos (SwsContext *s, int chr_subsample, int pos, int dir)
 
static av_cold 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 srcPos, int dstPos)
 
static void fill_rgb2yuv_table (SwsContext *c, const int table[4], int dstRange)
 
static void fill_xyztables (struct SwsContext *c)
 
static int handle_jpeg (enum AVPixelFormat *format)
 
static int handle_0alpha (enum AVPixelFormat *format)
 
static int handle_xyz (enum AVPixelFormat *format)
 
static void handle_formats (SwsContext *c)
 
static int range_override_needed (enum AVPixelFormat 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)
 
SwsContextsws_alloc_context (void)
 Allocate an empty SwsContext. More...
 
static uint16_t * alloc_gamma_tbl (double e)
 
static enum AVPixelFormat alphaless_fmt (enum AVPixelFormat fmt)
 
static int sws_init_single_context (SwsContext *c, SwsFilter *srcFilter, SwsFilter *dstFilter)
 
static int context_init_threaded (SwsContext *c, SwsFilter *src_filter, SwsFilter *dst_filter)
 
av_cold int sws_init_context (SwsContext *c, SwsFilter *srcFilter, SwsFilter *dstFilter)
 Initialize the swscaler context sws_context. More...
 
SwsContextsws_alloc_set_opts (int srcW, int srcH, enum AVPixelFormat srcFormat, int dstW, int dstH, enum AVPixelFormat dstFormat, int flags, const double *param)
 Allocate and return an SwsContext. More...
 
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...
 
static int isnan_vec (SwsVector *a)
 
static void makenan_vec (SwsVector *a)
 
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...
 
static SwsVectorsws_getConstVec (double c, int length)
 Allocate and return a vector with length coefficients, all with the same value c. More...
 
static SwsVectorsws_getIdentityVec (void)
 Allocate and return a vector with just one coefficient, with value 1.0. More...
 
static double sws_dcVec (SwsVector *a)
 
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...
 
static SwsVectorsws_sumVec (SwsVector *a, SwsVector *b)
 
static SwsVectorsws_getShiftedVec (SwsVector *a, int shift)
 
static void sws_shiftVec (SwsVector *a, int shift)
 
static void sws_addVec (SwsVector *a, SwsVector *b)
 
static 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)
 
void sws_freeFilter (SwsFilter *filter)
 
SwsFiltersws_getDefaultFilter (float lumaGBlur, float chromaGBlur, float lumaSharpen, float chromaSharpen, float chromaHShift, float chromaVShift, int verbose)
 
void sws_freeContext (SwsContext *c)
 Free the swscaler context swsContext. More...
 
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...
 
int ff_range_add (RangeList *rl, unsigned int start, unsigned int len)
 

Variables

static const FormatEntry format_entries []
 
static const ScaleAlgorithm scale_algorithms []
 

Macro Definition Documentation

◆ _DEFAULT_SOURCE

#define _DEFAULT_SOURCE

Definition at line 23 of file utils.c.

◆ _SVID_SOURCE

#define _SVID_SOURCE

Definition at line 24 of file utils.c.

◆ _DARWIN_C_SOURCE

#define _DARWIN_C_SOURCE

Definition at line 25 of file utils.c.

◆ USE_MMAP

#define USE_MMAP   0

Function Documentation

◆ ff_shuffle_filter_coefficients()

int ff_shuffle_filter_coefficients ( SwsContext c,
int filterPos,
int  filterSize,
int16_t *  filter,
int  dstW 
)

Definition at line 266 of file utils.c.

Referenced by check_hscale(), and sws_init_single_context().

◆ getSplineCoeff()

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

Definition at line 341 of file utils.c.

Referenced by initFilter().

◆ get_local_pos()

static av_cold int get_local_pos ( SwsContext s,
int  chr_subsample,
int  pos,
int  dir 
)
static

Definition at line 354 of file utils.c.

Referenced by sws_init_single_context().

◆ initFilter()

static av_cold 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  srcPos,
int  dstPos 
)
static

Definition at line 383 of file utils.c.

Referenced by sws_init_single_context().

◆ fill_rgb2yuv_table()

static void fill_rgb2yuv_table ( SwsContext c,
const int  table[4],
int  dstRange 
)
static

dstRange &&

Definition at line 792 of file utils.c.

Referenced by sws_setColorspaceDetails().

◆ fill_xyztables()

static void fill_xyztables ( struct SwsContext c)
static

Definition at line 886 of file utils.c.

Referenced by handle_formats().

◆ handle_jpeg()

static int handle_jpeg ( enum AVPixelFormat format)
static

Definition at line 922 of file utils.c.

Referenced by sws_init_context().

◆ handle_0alpha()

static int handle_0alpha ( enum AVPixelFormat format)
static

Definition at line 960 of file utils.c.

Referenced by handle_formats().

◆ handle_xyz()

static int handle_xyz ( enum AVPixelFormat format)
static

Definition at line 971 of file utils.c.

Referenced by handle_formats().

◆ handle_formats()

static void handle_formats ( SwsContext c)
static

Definition at line 980 of file utils.c.

Referenced by sws_init_single_context(), and sws_setColorspaceDetails().

◆ range_override_needed()

static int range_override_needed ( enum AVPixelFormat  format)
static

Definition at line 990 of file utils.c.

Referenced by sws_getColorspaceDetails(), and sws_setColorspaceDetails().

◆ alloc_gamma_tbl()

static uint16_t* alloc_gamma_tbl ( double  e)
static

Definition at line 1192 of file utils.c.

Referenced by sws_init_single_context().

◆ alphaless_fmt()

static enum AVPixelFormat alphaless_fmt ( enum AVPixelFormat  fmt)
static

Definition at line 1206 of file utils.c.

Referenced by sws_init_single_context().

◆ sws_init_single_context()

static av_cold int sws_init_single_context ( SwsContext c,
SwsFilter srcFilter,
SwsFilter dstFilter 
)
static

Definition at line 1267 of file utils.c.

Referenced by context_init_threaded(), and sws_init_context().

◆ context_init_threaded()

static int context_init_threaded ( SwsContext c,
SwsFilter src_filter,
SwsFilter dst_filter 
)
static

Definition at line 1977 of file utils.c.

Referenced by sws_init_context().

◆ sws_alloc_set_opts()

SwsContext* sws_alloc_set_opts ( int  srcW,
int  srcH,
enum AVPixelFormat  srcFormat,
int  dstW,
int  dstH,
enum AVPixelFormat  dstFormat,
int  flags,
const double param 
)

Allocate and return an SwsContext.

This is like sws_getContext() but does not perform the init step, allowing the user to set additional AVOptions.

See also
sws_getContext()

Definition at line 2059 of file utils.c.

Referenced by sws_getContext(), sws_init_single_context(), and sws_setColorspaceDetails().

◆ isnan_vec()

static int isnan_vec ( SwsVector a)
static

Definition at line 2105 of file utils.c.

Referenced by sws_getDefaultFilter().

◆ makenan_vec()

static void makenan_vec ( SwsVector a)
static

Definition at line 2114 of file utils.c.

Referenced by sws_addVec(), and sws_shiftVec().

◆ sws_getConstVec()

static SwsVector* sws_getConstVec ( double  c,
int  length 
)
static

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

Definition at line 2169 of file utils.c.

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

◆ sws_getIdentityVec()

static SwsVector* sws_getIdentityVec ( void  )
static

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

Definition at line 2188 of file utils.c.

Referenced by sws_getDefaultFilter().

◆ sws_dcVec()

static double sws_dcVec ( SwsVector a)
static

Definition at line 2193 of file utils.c.

Referenced by sws_normalizeVec().

◆ sws_sumVec()

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

Definition at line 2217 of file utils.c.

Referenced by sws_addVec().

◆ sws_getShiftedVec()

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

Definition at line 2235 of file utils.c.

Referenced by sws_shiftVec().

◆ sws_shiftVec()

static void sws_shiftVec ( SwsVector a,
int  shift 
)
static

Definition at line 2253 of file utils.c.

Referenced by sws_getDefaultFilter().

◆ sws_addVec()

static void sws_addVec ( SwsVector a,
SwsVector b 
)
static

Definition at line 2267 of file utils.c.

Referenced by sws_getDefaultFilter().

◆ sws_printVec2()

static void sws_printVec2 ( SwsVector a,
AVClass log_ctx,
int  log_level 
)
static

Print with av_log() a textual representation of the vector a if log_level <= av_log_level.

Definition at line 2285 of file utils.c.

Referenced by sws_getDefaultFilter().

◆ ff_range_add()

int ff_range_add ( RangeList rl,
unsigned int  start,
unsigned int  len 
)

Definition at line 2551 of file utils.c.

Referenced by sws_send_slice().

Variable Documentation

◆ format_entries

const FormatEntry format_entries[]
static

◆ scale_algorithms

const ScaleAlgorithm scale_algorithms[]
static
Initial value:
= {
{ SWS_AREA, "area averaging", 1 },
{ SWS_BICUBIC, "bicubic", 4 },
{ SWS_BICUBLIN, "luma bicubic / chroma bilinear", -1 },
{ SWS_BILINEAR, "bilinear", 2 },
{ SWS_FAST_BILINEAR, "fast bilinear", -1 },
{ SWS_GAUSS, "Gaussian", 8 },
{ SWS_LANCZOS, "Lanczos", -1 },
{ SWS_POINT, "nearest neighbor / point", -1 },
{ SWS_SINC, "sinc", 20 },
{ SWS_SPLINE, "bicubic spline", 20 },
{ SWS_X, "experimental", 8 },
}

Definition at line 369 of file utils.c.

Referenced by initFilter(), and sws_init_single_context().

SWS_FAST_BILINEAR
#define SWS_FAST_BILINEAR
Definition: swscale.h:65
SWS_BICUBLIN
#define SWS_BICUBLIN
Definition: swscale.h:71
SWS_POINT
#define SWS_POINT
Definition: swscale.h:69
SWS_SINC
#define SWS_SINC
Definition: swscale.h:73
SWS_X
#define SWS_X
Definition: swscale.h:68
SWS_GAUSS
#define SWS_GAUSS
Definition: swscale.h:72
SWS_SPLINE
#define SWS_SPLINE
Definition: swscale.h:75
SWS_LANCZOS
#define SWS_LANCZOS
Definition: swscale.h:74
SWS_BILINEAR
#define SWS_BILINEAR
Definition: swscale.h:66
SWS_AREA
#define SWS_AREA
Definition: swscale.h:70
SWS_BICUBIC
#define SWS_BICUBIC
Definition: swscale.h:67