#include <inttypes.h>
#include <string.h>
#include <math.h>
#include <stdio.h>
#include <unistd.h>
#include "config.h"
#include <assert.h>
#include "swscale.h"
#include "swscale_internal.h"
#include "rgb2rgb.h"
#include "libavutil/x86_cpu.h"
#include "libavutil/bswap.h"
#include "swscale_template.c"
Go to the source code of this file.
Defines | |
#define | _SVID_SOURCE |
#define | DITHER1XBPP |
#define | FAST_BGR2YV12 |
#define | RET 0xC3 |
#define | PI M_PI |
#define | isSupportedIn(x) |
#define | isSupportedOut(x) |
#define | isPacked(x) |
#define | usePal(x) |
#define | RGB2YUV_SHIFT 15 |
#define | BY ( (int)(0.114*219/255*(1<<RGB2YUV_SHIFT)+0.5)) |
#define | BV (-(int)(0.081*224/255*(1<<RGB2YUV_SHIFT)+0.5)) |
#define | BU ( (int)(0.500*224/255*(1<<RGB2YUV_SHIFT)+0.5)) |
#define | GY ( (int)(0.587*219/255*(1<<RGB2YUV_SHIFT)+0.5)) |
#define | GV (-(int)(0.419*224/255*(1<<RGB2YUV_SHIFT)+0.5)) |
#define | GU (-(int)(0.331*224/255*(1<<RGB2YUV_SHIFT)+0.5)) |
#define | RY ( (int)(0.299*219/255*(1<<RGB2YUV_SHIFT)+0.5)) |
#define | RV ( (int)(0.500*224/255*(1<<RGB2YUV_SHIFT)+0.5)) |
#define | RU (-(int)(0.169*224/255*(1<<RGB2YUV_SHIFT)+0.5)) |
#define | YSCALE_YUV_2_PACKEDX_NOCLIP_C(type) |
#define | YSCALE_YUV_2_PACKEDX_C(type) |
#define | YSCALE_YUV_2_PACKEDX_FULL_C |
#define | YSCALE_YUV_2_RGBX_FULL_C(rnd) |
#define | YSCALE_YUV_2_GRAY16_C |
#define | YSCALE_YUV_2_RGBX_C(type) |
#define | YSCALE_YUV_2_PACKED2_C |
#define | YSCALE_YUV_2_GRAY16_2_C |
#define | YSCALE_YUV_2_RGB2_C(type) |
#define | YSCALE_YUV_2_PACKED1_C |
#define | YSCALE_YUV_2_GRAY16_1_C |
#define | YSCALE_YUV_2_RGB1_C(type) |
#define | YSCALE_YUV_2_PACKED1B_C |
#define | YSCALE_YUV_2_RGB1B_C(type) |
#define | YSCALE_YUV_2_MONO2_C |
#define | YSCALE_YUV_2_MONOX_C |
#define | YSCALE_YUV_2_ANYRGB_C(func, func2, func_g16, func_monoblack) |
#define | COMPILE_C |
#define | HAVE_MMX 0 |
#define | HAVE_MMX2 0 |
#define | HAVE_AMD3DNOW 0 |
#define | HAVE_ALTIVEC 0 |
#define | RENAME(a) a ## _C |
#define | MAX_FUNNY_CODE_SIZE 10000 |
Functions | |
unsigned | swscale_version (void) |
Returns the LIBSWSCALE_VERSION_INT constant. | |
static SwsVector * | sws_getConvVec (SwsVector *a, SwsVector *b) |
const char * | sws_format_name (enum PixelFormat format) |
static void | yuv2yuvXinC (int16_t *lumFilter, int16_t **lumSrc, int lumFilterSize, int16_t *chrFilter, int16_t **chrSrc, int chrFilterSize, uint8_t *dest, uint8_t *uDest, uint8_t *vDest, int dstW, int chrDstW) |
static void | yuv2nv12XinC (int16_t *lumFilter, int16_t **lumSrc, int lumFilterSize, int16_t *chrFilter, int16_t **chrSrc, int chrFilterSize, uint8_t *dest, uint8_t *uDest, int dstW, int chrDstW, int dstFormat) |
static void | yuv2packedXinC (SwsContext *c, int16_t *lumFilter, int16_t **lumSrc, int lumFilterSize, int16_t *chrFilter, int16_t **chrSrc, int chrFilterSize, uint8_t *dest, int dstW, int y) |
static void | yuv2rgbXinC_full (SwsContext *c, int16_t *lumFilter, int16_t **lumSrc, int lumFilterSize, int16_t *chrFilter, int16_t **chrSrc, int chrFilterSize, uint8_t *dest, int dstW, int y) |
static double | getSplineCoeff (double a, double b, double c, double d, double dist) |
static int | initFilter (int16_t **outFilter, int16_t **filterPos, int *outFilterSize, int xInc, int srcW, int dstW, int filterAlign, int one, int flags, SwsVector *srcFilter, SwsVector *dstFilter, double param[2]) |
static void | globalInit (void) |
static SwsFunc | getSwsFunc (int flags) |
static int | PlanarToNV12Wrapper (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dstParam[], int dstStride[]) |
static int | PlanarToYuy2Wrapper (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dstParam[], int dstStride[]) |
static int | PlanarToUyvyWrapper (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dstParam[], int dstStride[]) |
static int | YUV422PToYuy2Wrapper (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dstParam[], int dstStride[]) |
static int | YUV422PToUyvyWrapper (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dstParam[], int dstStride[]) |
static int | pal2rgbWrapper (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[]) |
static int | rgb2rgbWrapper (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[]) |
static int | bgr24toyv12Wrapper (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[]) |
static int | yvu9toyv12Wrapper (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[]) |
static int | packedCopy (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[]) |
static int | planarCopy (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[]) |
static int | gray16togray (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[]) |
static int | graytogray16 (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[]) |
static int | gray16swap (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[]) |
static void | getSubSampleFactors (int *h, int *v, int format) |
static uint16_t | roundToInt16 (int64_t f) |
int | sws_setColorspaceDetails (SwsContext *c, const int inv_table[4], int srcRange, const int table[4], int dstRange, int brightness, int contrast, int saturation) |
int | sws_getColorspaceDetails (SwsContext *c, int **inv_table, int *srcRange, int **table, int *dstRange, int *brightness, int *contrast, int *saturation) |
static int | handle_jpeg (enum PixelFormat *format) |
SwsContext * | sws_getContext (int srcW, int srcH, enum PixelFormat srcFormat, int dstW, int dstH, enum PixelFormat dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, double *param) |
Allocates and returns a SwsContext. | |
int | sws_scale (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[]) |
swscale wrapper, so we don't need to export the SwsContext. | |
int | sws_scale_ordered (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[]) |
SwsFilter * | sws_getDefaultFilter (float lumaGBlur, float chromaGBlur, float lumaSharpen, float chromaSharpen, float chromaHShift, float chromaVShift, int verbose) |
SwsVector * | sws_getGaussianVec (double variance, double quality) |
Returns a normalized Gaussian curve used to filter stuff quality=3 is high quality, lower is lower quality. | |
SwsVector * | sws_getConstVec (double c, int length) |
Allocates and returns a vector with length coefficients, all with the same value c . | |
SwsVector * | sws_getIdentityVec (void) |
Allocates and returns a vector with just one coefficient, with value 1.0. | |
double | sws_dcVec (SwsVector *a) |
void | sws_scaleVec (SwsVector *a, double scalar) |
Scales all the coefficients of a by the scalar value. | |
void | sws_normalizeVec (SwsVector *a, double height) |
Scales all the coefficients of a so that their sum equals height . | |
static SwsVector * | sws_sumVec (SwsVector *a, SwsVector *b) |
static SwsVector * | sws_diffVec (SwsVector *a, SwsVector *b) |
static SwsVector * | sws_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) |
SwsVector * | sws_cloneVec (SwsVector *a) |
Allocates and returns 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) |
Prints with av_log() a textual representation of the vector a if log_level <= av_log_level. | |
void | sws_printVec (SwsVector *a) |
void | sws_freeVec (SwsVector *a) |
void | sws_freeFilter (SwsFilter *filter) |
void | sws_freeContext (SwsContext *c) |
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, double *param) |
Checks if context can be reused, otherwise reallocates a new one. | |
Variables | |
const int32_t | ff_yuv2rgb_coeffs [8][4] |
static const double | rgb2yuv_table [8][9] |
static unsigned char | clip_table [768] |
static const uint8_t | dither_2x2_4 [2][8] |
static const uint8_t | dither_2x2_8 [2][8] |
const uint8_t | dither_8x8_32 [8][8] |
const uint8_t | dither_8x8_73 [8][8] |
const uint8_t | dither_8x8_220 [8][8] |
break | |
default | __pad0__ |
#define isPacked | ( | x | ) |
Value:
( \ (x)==PIX_FMT_PAL8 \ || (x)==PIX_FMT_YUYV422 \ || (x)==PIX_FMT_UYVY422 \ || isRGB(x) \ || isBGR(x) \ )
Definition at line 151 of file swscale.c.
Referenced by sws_getContext().
#define isSupportedIn | ( | x | ) |
#define isSupportedOut | ( | x | ) |
Value:
( \ (x)==PIX_FMT_YUV420P \ || (x)==PIX_FMT_YUYV422 \ || (x)==PIX_FMT_UYVY422 \ || (x)==PIX_FMT_YUV444P \ || (x)==PIX_FMT_YUV422P \ || (x)==PIX_FMT_YUV411P \ || isRGB(x) \ || isBGR(x) \ || (x)==PIX_FMT_NV12 \ || (x)==PIX_FMT_NV21 \ || (x)==PIX_FMT_GRAY16BE \ || (x)==PIX_FMT_GRAY16LE \ || (x)==PIX_FMT_GRAY8 \ || (x)==PIX_FMT_YUV410P \ || (x)==PIX_FMT_YUV440P \ )
Definition at line 134 of file swscale.c.
Referenced by sws_getContext().
#define MAX_FUNNY_CODE_SIZE 10000 |
Referenced by sws_freeContext(), and sws_getContext().
#define PI M_PI |
#define usePal | ( | x | ) |
Value:
( \ (x)==PIX_FMT_PAL8 \ || (x)==PIX_FMT_BGR4_BYTE \ || (x)==PIX_FMT_RGB4_BYTE \ || (x)==PIX_FMT_BGR8 \ || (x)==PIX_FMT_RGB8 \ )
Definition at line 158 of file swscale.c.
Referenced by pal2rgbWrapper(), sws_getContext(), and sws_scale().
#define YSCALE_YUV_2_ANYRGB_C | ( | func, | |||
func2, | |||||
func_g16, | |||||
func_monoblack | ) |
#define YSCALE_YUV_2_GRAY16_1_C |
#define YSCALE_YUV_2_GRAY16_2_C |
#define YSCALE_YUV_2_GRAY16_C |
Value:
for (i=0; i<(dstW>>1); i++){\ int j;\ int Y1 = 1<<18;\ int Y2 = 1<<18;\ int U = 1<<18;\ int V = 1<<18;\ \ const int i2= 2*i;\ \ for (j=0; j<lumFilterSize; j++)\ {\ Y1 += lumSrc[j][i2] * lumFilter[j];\ Y2 += lumSrc[j][i2+1] * lumFilter[j];\ }\ Y1>>=11;\ Y2>>=11;\ if ((Y1|Y2|U|V)&65536)\ {\ if (Y1>65535) Y1=65535; \ else if (Y1<0)Y1=0; \ if (Y2>65535) Y2=65535; \ else if (Y2<0)Y2=0; \ }
Definition at line 630 of file swscale.c.
Referenced by yuv2packedXinC().
#define YSCALE_YUV_2_MONO2_C |
Value:
const uint8_t * const d128=dither_8x8_220[y&7];\ uint8_t *g= c->table_gU[128] + c->table_gV[128];\ for (i=0; i<dstW-7; i+=8){\ int acc;\ acc = g[((buf0[i ]*yalpha1+buf1[i ]*yalpha)>>19) + d128[0]];\ acc+= acc + g[((buf0[i+1]*yalpha1+buf1[i+1]*yalpha)>>19) + d128[1]];\ acc+= acc + g[((buf0[i+2]*yalpha1+buf1[i+2]*yalpha)>>19) + d128[2]];\ acc+= acc + g[((buf0[i+3]*yalpha1+buf1[i+3]*yalpha)>>19) + d128[3]];\ acc+= acc + g[((buf0[i+4]*yalpha1+buf1[i+4]*yalpha)>>19) + d128[4]];\ acc+= acc + g[((buf0[i+5]*yalpha1+buf1[i+5]*yalpha)>>19) + d128[5]];\ acc+= acc + g[((buf0[i+6]*yalpha1+buf1[i+6]*yalpha)>>19) + d128[6]];\ acc+= acc + g[((buf0[i+7]*yalpha1+buf1[i+7]*yalpha)>>19) + d128[7]];\ ((uint8_t*)dest)[0]= c->dstFormat == PIX_FMT_MONOBLACK ? acc : ~acc;\ dest++;\ }\
#define YSCALE_YUV_2_MONOX_C |
Value:
const uint8_t * const d128=dither_8x8_220[y&7];\ uint8_t *g= c->table_gU[128] + c->table_gV[128];\ int acc=0;\ for (i=0; i<dstW-1; i+=2){\ int j;\ int Y1=1<<18;\ int Y2=1<<18;\ \ for (j=0; j<lumFilterSize; j++)\ {\ Y1 += lumSrc[j][i] * lumFilter[j];\ Y2 += lumSrc[j][i+1] * lumFilter[j];\ }\ Y1>>=19;\ Y2>>=19;\ if ((Y1|Y2)&256)\ {\ if (Y1>255) Y1=255;\ else if (Y1<0)Y1=0;\ if (Y2>255) Y2=255;\ else if (Y2<0)Y2=0;\ }\ acc+= acc + g[Y1+d128[(i+0)&7]];\ acc+= acc + g[Y2+d128[(i+1)&7]];\ if ((i&7)==6){\ ((uint8_t*)dest)[0]= c->dstFormat == PIX_FMT_MONOBLACK ? acc : ~acc;\ dest++;\ }\ }
Definition at line 736 of file swscale.c.
Referenced by yuv2packedXinC().
#define YSCALE_YUV_2_PACKED1_C |
#define YSCALE_YUV_2_PACKED1B_C |
#define YSCALE_YUV_2_PACKED2_C |
#define YSCALE_YUV_2_PACKEDX_C | ( | type | ) |
Value:
YSCALE_YUV_2_PACKEDX_NOCLIP_C(type)\ if ((Y1|Y2|U|V)&256)\ {\ if (Y1>255) Y1=255; \ else if (Y1<0)Y1=0; \ if (Y2>255) Y2=255; \ else if (Y2<0)Y2=0; \ if (U>255) U=255; \ else if (U<0) U=0; \ if (V>255) V=255; \ else if (V<0) V=0; \ }
Definition at line 579 of file swscale.c.
Referenced by yuv2packedXinC().
#define YSCALE_YUV_2_PACKEDX_FULL_C |
Value:
for (i=0; i<dstW; i++){\ int j;\ int Y = 0;\ int U = -128<<19;\ int V = -128<<19;\ int R,G,B;\ \ for (j=0; j<lumFilterSize; j++){\ Y += lumSrc[j][i ] * lumFilter[j];\ }\ for (j=0; j<chrFilterSize; j++){\ U += chrSrc[j][i ] * chrFilter[j];\ V += chrSrc[j][i+VOFW] * chrFilter[j];\ }\ Y >>=10;\ U >>=10;\ V >>=10;\
#define YSCALE_YUV_2_PACKEDX_NOCLIP_C | ( | type | ) |
Value:
for (i=0; i<(dstW>>1); i++){\ int j;\ int Y1 = 1<<18;\ int Y2 = 1<<18;\ int U = 1<<18;\ int V = 1<<18;\ type av_unused *r, *b, *g;\ const int i2= 2*i;\ \ for (j=0; j<lumFilterSize; j++)\ {\ Y1 += lumSrc[j][i2] * lumFilter[j];\ Y2 += lumSrc[j][i2+1] * lumFilter[j];\ }\ for (j=0; j<chrFilterSize; j++)\ {\ U += chrSrc[j][i] * chrFilter[j];\ V += chrSrc[j][i+VOFW] * chrFilter[j];\ }\ Y1>>=19;\ Y2>>=19;\ U >>=19;\ V >>=19;\
#define YSCALE_YUV_2_RGB1_C | ( | type | ) |
#define YSCALE_YUV_2_RGB1B_C | ( | type | ) |
#define YSCALE_YUV_2_RGB2_C | ( | type | ) |
#define YSCALE_YUV_2_RGBX_C | ( | type | ) |
Value:
YSCALE_YUV_2_PACKEDX_C(type) /* FIXME fix tables so that clipping is not needed and then use _NOCLIP*/\ r = (type *)c->table_rV[V]; \ g = (type *)(c->table_gU[U] + c->table_gV[V]); \ b = (type *)c->table_bU[U]; \
Definition at line 655 of file swscale.c.
Referenced by yuv2packedXinC().
#define YSCALE_YUV_2_RGBX_FULL_C | ( | rnd | ) |
Value:
YSCALE_YUV_2_PACKEDX_FULL_C\ Y-= c->yuv2rgb_y_offset;\ Y*= c->yuv2rgb_y_coeff;\ Y+= rnd;\ R= Y + V*c->yuv2rgb_v2r_coeff;\ G= Y + V*c->yuv2rgb_v2g_coeff + U*c->yuv2rgb_u2g_coeff;\ B= Y + U*c->yuv2rgb_u2b_coeff;\ if ((R|G|B)&(0xC0000000)){\ if (R>=(256<<22)) R=(256<<22)-1; \ else if (R<0)R=0; \ if (G>=(256<<22)) G=(256<<22)-1; \ else if (G<0)G=0; \ if (B>=(256<<22)) B=(256<<22)-1; \ else if (B<0)B=0; \ }\
Definition at line 612 of file swscale.c.
Referenced by yuv2rgbXinC_full().
static int bgr24toyv12Wrapper | ( | SwsContext * | c, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dst[], | |||
int | dstStride[] | |||
) | [static] |
static double getSplineCoeff | ( | double | a, | |
double | b, | |||
double | c, | |||
double | d, | |||
double | dist | |||
) | [static] |
static void getSubSampleFactors | ( | int * | h, | |
int * | v, | |||
int | format | |||
) | [static] |
static SwsFunc getSwsFunc | ( | int | flags | ) | [static] |
static void globalInit | ( | void | ) | [static] |
static int gray16swap | ( | SwsContext * | c, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dst[], | |||
int | dstStride[] | |||
) | [static] |
static int gray16togray | ( | SwsContext * | c, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dst[], | |||
int | dstStride[] | |||
) | [static] |
static int graytogray16 | ( | SwsContext * | c, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dst[], | |||
int | dstStride[] | |||
) | [static] |
static int handle_jpeg | ( | enum PixelFormat * | format | ) | [static] |
static int packedCopy | ( | SwsContext * | c, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dst[], | |||
int | dstStride[] | |||
) | [static] |
static int pal2rgbWrapper | ( | SwsContext * | c, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dst[], | |||
int | dstStride[] | |||
) | [static] |
static int planarCopy | ( | SwsContext * | c, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dst[], | |||
int | dstStride[] | |||
) | [static] |
static int PlanarToNV12Wrapper | ( | SwsContext * | c, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dstParam[], | |||
int | dstStride[] | |||
) | [static] |
static int PlanarToUyvyWrapper | ( | SwsContext * | c, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dstParam[], | |||
int | dstStride[] | |||
) | [static] |
static int PlanarToYuy2Wrapper | ( | SwsContext * | c, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dstParam[], | |||
int | dstStride[] | |||
) | [static] |
static int rgb2rgbWrapper | ( | SwsContext * | c, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dst[], | |||
int | dstStride[] | |||
) | [static] |
static uint16_t roundToInt16 | ( | int64_t | f | ) | [static] |
double sws_dcVec | ( | SwsVector * | a | ) |
const char* sws_format_name | ( | enum PixelFormat | format | ) |
Definition at line 374 of file swscale.c.
Referenced by altivec_yuv2packedX(), doTest(), ff_bfin_yuv2rgb_get_func_ptr(), pal2rgbWrapper(), rgb2rgbWrapper(), selfTest(), and sws_getContext().
void sws_freeContext | ( | SwsContext * | c | ) |
void sws_freeVec | ( | SwsVector * | a | ) |
Definition at line 3098 of file swscale.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, | |||
double * | param | |||
) | [read] |
Checks if context
can be reused, otherwise reallocates 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.
int sws_getColorspaceDetails | ( | SwsContext * | c, | |
int ** | inv_table, | |||
int * | srcRange, | |||
int ** | table, | |||
int * | dstRange, | |||
int * | brightness, | |||
int * | contrast, | |||
int * | saturation | |||
) |
SwsVector* sws_getConstVec | ( | double | c, | |
int | length | |||
) |
Allocates and returns a vector with length
coefficients, all with the same value c
.
Definition at line 2908 of file swscale.c.
Referenced by sws_getIdentityVec().
SwsContext* sws_getContext | ( | int | srcW, | |
int | srcH, | |||
enum PixelFormat | srcFormat, | |||
int | dstW, | |||
int | dstH, | |||
enum PixelFormat | dstFormat, | |||
int | flags, | |||
SwsFilter * | srcFilter, | |||
SwsFilter * | dstFilter, | |||
double * | param | |||
) | [read] |
Allocates and returns a SwsContext.
You need it to perform scaling/conversion operations using sws_scale().
srcW | the width of the source image | |
srcH | the height of the source image | |
srcFormat | the source image format | |
dstW | the width of the destination image | |
dstH | the height of the destination image | |
dstFormat | the destination image format | |
flags | specify which algorithm and options to use for rescaling |
SwsFilter* sws_getDefaultFilter | ( | float | lumaGBlur, | |
float | chromaGBlur, | |||
float | lumaSharpen, | |||
float | chromaSharpen, | |||
float | chromaHShift, | |||
float | chromaVShift, | |||
int | verbose | |||
) |
SwsVector* sws_getGaussianVec | ( | double | variance, | |
double | quality | |||
) |
Returns a normalized Gaussian curve used to filter stuff quality=3 is high quality, lower is lower quality.
Definition at line 2887 of file swscale.c.
Referenced by sws_getDefaultFilter().
SwsVector* sws_getIdentityVec | ( | void | ) |
Allocates and returns a vector with just one coefficient, with value 1.0.
Definition at line 2923 of file swscale.c.
Referenced by sws_getDefaultFilter().
void sws_normalizeVec | ( | SwsVector * | a, | |
double | height | |||
) |
Scales all the coefficients of a
so that their sum equals height
.
"
Definition at line 2944 of file swscale.c.
Referenced by sws_getDefaultFilter(), and sws_getGaussianVec().
void sws_printVec | ( | SwsVector * | a | ) |
Prints with av_log() a textual representation of the vector a
if log_level
<= av_log_level.
Definition at line 3069 of file swscale.c.
Referenced by sws_getDefaultFilter(), and sws_printVec().
int sws_scale | ( | SwsContext * | c, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dst[], | |||
int | dstStride[] | |||
) |
swscale wrapper, so we don't need to export the SwsContext.
Scales the image slice in srcSlice
and puts the resulting scaled slice in the image in dst
.
Assumes planar YUV to be in YUV order instead of YVU.
int sws_scale_ordered | ( | struct SwsContext * | context, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dst[], | |||
int | dstStride[] | |||
) |
void sws_scaleVec | ( | SwsVector * | a, | |
double | scalar | |||
) |
Scales all the coefficients of a
by the scalar
value.
Definition at line 2937 of file swscale.c.
Referenced by sws_getDefaultFilter(), and sws_normalizeVec().
int sws_setColorspaceDetails | ( | SwsContext * | c, | |
const int | inv_table[4], | |||
int | srcRange, | |||
const int | table[4], | |||
int | dstRange, | |||
int | brightness, | |||
int | contrast, | |||
int | saturation | |||
) |
inv_table | the yuv2rgb coefficients, normally ff_yuv2rgb_coeffs[x] | |
fullRange | if 1 then the luma range is 0..255 if 0 it is 16..235 |
Definition at line 2082 of file swscale.c.
Referenced by sws_getContext().
void sws_shiftVec | ( | SwsVector * | a, | |
int | shift | |||
) |
unsigned swscale_version | ( | void | ) |
static void yuv2nv12XinC | ( | int16_t * | lumFilter, | |
int16_t ** | lumSrc, | |||
int | lumFilterSize, | |||
int16_t * | chrFilter, | |||
int16_t ** | chrSrc, | |||
int | chrFilterSize, | |||
uint8_t * | dest, | |||
uint8_t * | uDest, | |||
int | dstW, | |||
int | chrDstW, | |||
int | dstFormat | |||
) | [inline, static] |
static void yuv2packedXinC | ( | SwsContext * | c, | |
int16_t * | lumFilter, | |||
int16_t ** | lumSrc, | |||
int | lumFilterSize, | |||
int16_t * | chrFilter, | |||
int16_t ** | chrSrc, | |||
int | chrFilterSize, | |||
uint8_t * | dest, | |||
int | dstW, | |||
int | y | |||
) | [inline, static] |
static void yuv2rgbXinC_full | ( | SwsContext * | c, | |
int16_t * | lumFilter, | |||
int16_t ** | lumSrc, | |||
int | lumFilterSize, | |||
int16_t * | chrFilter, | |||
int16_t ** | chrSrc, | |||
int | chrFilterSize, | |||
uint8_t * | dest, | |||
int | dstW, | |||
int | y | |||
) | [inline, static] |
static void yuv2yuvXinC | ( | int16_t * | lumFilter, | |
int16_t ** | lumSrc, | |||
int | lumFilterSize, | |||
int16_t * | chrFilter, | |||
int16_t ** | chrSrc, | |||
int | chrFilterSize, | |||
uint8_t * | dest, | |||
uint8_t * | uDest, | |||
uint8_t * | vDest, | |||
int | dstW, | |||
int | chrDstW | |||
) | [inline, static] |
static int YUV422PToUyvyWrapper | ( | SwsContext * | c, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dstParam[], | |||
int | dstStride[] | |||
) | [static] |
static int YUV422PToYuy2Wrapper | ( | SwsContext * | c, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dstParam[], | |||
int | dstStride[] | |||
) | [static] |
static int yvu9toyv12Wrapper | ( | SwsContext * | c, | |
uint8_t * | src[], | |||
int | srcStride[], | |||
int | srcSliceY, | |||
int | srcSliceH, | |||
uint8_t * | dst[], | |||
int | dstStride[] | |||
) | [static] |
unsigned char clip_table[768] [static] |
const uint8_t dither_2x2_4[2][8] [static] |
const uint8_t dither_2x2_8[2][8] [static] |
const uint8_t dither_8x8_220[8][8] |
Initial value:
{ {117, 62, 158, 103, 113, 58, 155, 100, }, { 34, 199, 21, 186, 31, 196, 17, 182, }, {144, 89, 131, 76, 141, 86, 127, 72, }, { 0, 165, 41, 206, 10, 175, 52, 217, }, {110, 55, 151, 96, 120, 65, 162, 107, }, { 28, 193, 14, 179, 38, 203, 24, 189, }, {138, 83, 124, 69, 148, 93, 134, 79, }, { 7, 172, 48, 213, 3, 168, 45, 210, }, }
const uint8_t dither_8x8_32[8][8] |
Initial value:
{ { 17, 9, 23, 15, 16, 8, 22, 14, }, { 5, 29, 3, 27, 4, 28, 2, 26, }, { 21, 13, 19, 11, 20, 12, 18, 10, }, { 0, 24, 6, 30, 1, 25, 7, 31, }, { 16, 8, 22, 14, 17, 9, 23, 15, }, { 4, 28, 2, 26, 5, 29, 3, 27, }, { 20, 12, 18, 10, 21, 13, 19, 11, }, { 1, 25, 7, 31, 0, 24, 6, 30, }, }
const uint8_t dither_8x8_73[8][8] |
Initial value:
{ { 0, 55, 14, 68, 3, 58, 17, 72, }, { 37, 18, 50, 32, 40, 22, 54, 35, }, { 9, 64, 5, 59, 13, 67, 8, 63, }, { 46, 27, 41, 23, 49, 31, 44, 26, }, { 2, 57, 16, 71, 1, 56, 15, 70, }, { 39, 21, 52, 34, 38, 19, 51, 33, }, { 11, 66, 7, 62, 10, 65, 6, 60, }, { 48, 30, 43, 25, 47, 29, 42, 24, }, }
const int32_t ff_yuv2rgb_coeffs[8][4] |
const double rgb2yuv_table[8][9] [static] |
Initial value:
{ {0.7152, 0.0722, 0.2126, -0.386, 0.5, -0.115, -0.454, -0.046, 0.5}, {0.7152, 0.0722, 0.2126, -0.386, 0.5, -0.115, -0.454, -0.046, 0.5}, {0.587 , 0.114 , 0.299 , -0.331, 0.5, -0.169, -0.419, -0.081, 0.5}, {0.587 , 0.114 , 0.299 , -0.331, 0.5, -0.169, -0.419, -0.081, 0.5}, {0.59 , 0.11 , 0.30 , -0.331, 0.5, -0.169, -0.421, -0.079, 0.5}, {0.587 , 0.114 , 0.299 , -0.331, 0.5, -0.169, -0.419, -0.081, 0.5}, {0.587 , 0.114 , 0.299 , -0.331, 0.5, -0.169, -0.419, -0.081, 0.5}, {0.701 , 0.087 , 0.212 , -0.384, 0.5 -0.116, -0.445, -0.055, 0.5}, }