swscale.c File Reference
#include <assert.h>
#include <inttypes.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include "libavutil/avassert.h"
#include "libavutil/avutil.h"
#include "libavutil/bswap.h"
#include "libavutil/cpu.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/mathematics.h"
#include "libavutil/pixdesc.h"
#include "config.h"
#include "rgb2rgb.h"
#include "swscale_internal.h"
#include "swscale.h"
Include dependency graph for swscale.c:

Go to the source code of this file.

Macros

#define DEBUG_SWSCALE_BUFFERS   0
 
#define DEBUG_BUFFERS(...)
 
#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))
 

Functions

 DECLARE_ALIGNED (8, const uint8_t, dither_8x8_128)[8][8]
 
 DECLARE_ALIGNED (8, const uint8_t, ff_sws_pb_64)[8]
 
static av_always_inline void fillPlane (uint8_t *plane, int stride, int width, int height, int y, uint8_t val)
 
static void hScale16To19_c (SwsContext *c, int16_t *_dst, int dstW, const uint8_t *_src, const int16_t *filter, const int32_t *filterPos, int filterSize)
 
static void hScale16To15_c (SwsContext *c, int16_t *dst, int dstW, const uint8_t *_src, const int16_t *filter, const int32_t *filterPos, int filterSize)
 
static void hScale8To15_c (SwsContext *c, int16_t *dst, int dstW, const uint8_t *src, const int16_t *filter, const int32_t *filterPos, int filterSize)
 
static void hScale8To19_c (SwsContext *c, int16_t *_dst, int dstW, const uint8_t *src, const int16_t *filter, const int32_t *filterPos, int filterSize)
 
static void chrRangeToJpeg_c (int16_t *dstU, int16_t *dstV, int width)
 
static void chrRangeFromJpeg_c (int16_t *dstU, int16_t *dstV, int width)
 
static void lumRangeToJpeg_c (int16_t *dst, int width)
 
static void lumRangeFromJpeg_c (int16_t *dst, int width)
 
static void chrRangeToJpeg16_c (int16_t *_dstU, int16_t *_dstV, int width)
 
static void chrRangeFromJpeg16_c (int16_t *_dstU, int16_t *_dstV, int width)
 
static void lumRangeToJpeg16_c (int16_t *_dst, int width)
 
static void lumRangeFromJpeg16_c (int16_t *_dst, int width)
 
static void hyscale_fast_c (SwsContext *c, int16_t *dst, int dstWidth, const uint8_t *src, int srcW, int xInc)
 
static av_always_inline void hyscale (SwsContext *c, int16_t *dst, int dstWidth, const uint8_t *src_in[4], int srcW, int xInc, const int16_t *hLumFilter, const int32_t *hLumFilterPos, int hLumFilterSize, uint8_t *formatConvBuffer, uint32_t *pal, int isAlpha)
 
static void hcscale_fast_c (SwsContext *c, int16_t *dst1, int16_t *dst2, int dstWidth, const uint8_t *src1, const uint8_t *src2, int srcW, int xInc)
 
static av_always_inline void hcscale (SwsContext *c, int16_t *dst1, int16_t *dst2, int dstWidth, const uint8_t *src_in[4], int srcW, int xInc, const int16_t *hChrFilter, const int32_t *hChrFilterPos, int hChrFilterSize, uint8_t *formatConvBuffer, uint32_t *pal)
 
static int swScale (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
 
static av_cold void sws_init_swScale_c (SwsContext *c)
 
SwsFunc ff_getSwsFunc (SwsContext *c)
 Return function pointer to fastest main scaler path function depending on architecture and available optimizations. More...
 
static void reset_ptr (const uint8_t *src[], int format)
 
static int check_image_pointers (const uint8_t *const data[4], enum AVPixelFormat pix_fmt, const int linesizes[4])
 
int attribute_align_arg sws_scale (struct SwsContext *c, const uint8_t *const srcSlice[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[])
 swscale wrapper, so we don't need to export the SwsContext. More...
 

Macro Definition Documentation

#define BU   ( (int) (0.500 * 224 / 255 * (1 << RGB2YUV_SHIFT) + 0.5))

Referenced by sws_scale().

#define BV   (-(int) (0.081 * 224 / 255 * (1 << RGB2YUV_SHIFT) + 0.5))

Referenced by sws_scale().

#define BY   ( (int) (0.114 * 219 / 255 * (1 << RGB2YUV_SHIFT) + 0.5))

Referenced by sws_scale().

#define DEBUG_BUFFERS (   ...)
Value:
av_log(c, AV_LOG_DEBUG, __VA_ARGS__)
void av_log(void *avcl, int level, const char *fmt,...)
Definition: log.c:246
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
Definition: log.h:162
static double c[64]
#define DEBUG_SWSCALE_BUFFERS
Definition: swscale.c:326

Definition at line 327 of file swscale.c.

Referenced by swScale().

#define DEBUG_SWSCALE_BUFFERS   0

Definition at line 326 of file swscale.c.

#define GU   (-(int) (0.331 * 224 / 255 * (1 << RGB2YUV_SHIFT) + 0.5))

Referenced by sws_scale().

#define GV   (-(int) (0.419 * 224 / 255 * (1 << RGB2YUV_SHIFT) + 0.5))

Referenced by sws_scale().

#define GY   ( (int) (0.587 * 219 / 255 * (1 << RGB2YUV_SHIFT) + 0.5))

Referenced by sws_scale().

#define RU   (-(int) (0.169 * 224 / 255 * (1 << RGB2YUV_SHIFT) + 0.5))

Referenced by sws_scale().

#define RV   ( (int) (0.500 * 224 / 255 * (1 << RGB2YUV_SHIFT) + 0.5))

Referenced by sws_scale().

#define RY   ( (int) (0.299 * 219 / 255 * (1 << RGB2YUV_SHIFT) + 0.5))

Referenced by sws_scale().

Function Documentation

static int check_image_pointers ( const uint8_t *const  data[4],
enum AVPixelFormat  pix_fmt,
const int  linesizes[4] 
)
static

Definition at line 779 of file swscale.c.

Referenced by sws_scale().

static void chrRangeFromJpeg16_c ( int16_t *  _dstU,
int16_t *  _dstV,
int  width 
)
static

Definition at line 196 of file swscale.c.

Referenced by sws_init_swScale_c().

static void chrRangeFromJpeg_c ( int16_t *  dstU,
int16_t *  dstV,
int  width 
)
static

Definition at line 162 of file swscale.c.

Referenced by sws_init_swScale_c().

static void chrRangeToJpeg16_c ( int16_t *  _dstU,
int16_t *  _dstV,
int  width 
)
static

Definition at line 185 of file swscale.c.

Referenced by sws_init_swScale_c().

static void chrRangeToJpeg_c ( int16_t *  dstU,
int16_t *  dstV,
int  width 
)
static

Definition at line 153 of file swscale.c.

Referenced by sws_init_swScale_c().

DECLARE_ALIGNED ( ,
const uint8_t  ,
dither_8x8_128   
)
DECLARE_ALIGNED ( ,
const uint8_t  ,
ff_sws_pb_64   
)
SwsFunc ff_getSwsFunc ( SwsContext c)

Return function pointer to fastest main scaler path function depending on architecture and available optimizations.

Definition at line 755 of file swscale.c.

Referenced by sws_init_context(), and usePal().

static av_always_inline void fillPlane ( uint8_t plane,
int  stride,
int  width,
int  height,
int  y,
uint8_t  val 
)
static

Definition at line 54 of file swscale.c.

Referenced by swScale().

static av_always_inline void hcscale ( SwsContext c,
int16_t *  dst1,
int16_t *  dst2,
int  dstWidth,
const uint8_t src_in[4],
int  srcW,
int  xInc,
const int16_t *  hChrFilter,
const int32_t hChrFilterPos,
int  hChrFilterSize,
uint8_t formatConvBuffer,
uint32_t *  pal 
)
static

Definition at line 291 of file swscale.c.

Referenced by swScale().

static void hcscale_fast_c ( SwsContext c,
int16_t *  dst1,
int16_t *  dst2,
int  dstWidth,
const uint8_t src1,
const uint8_t src2,
int  srcW,
int  xInc 
)
static

Definition at line 272 of file swscale.c.

Referenced by sws_init_swScale_c().

static void hScale16To15_c ( SwsContext c,
int16_t *  dst,
int  dstW,
const uint8_t _src,
const int16_t *  filter,
const int32_t filterPos,
int  filterSize 
)
static

Definition at line 92 of file swscale.c.

Referenced by sws_init_swScale_c().

static void hScale16To19_c ( SwsContext c,
int16_t *  _dst,
int  dstW,
const uint8_t _src,
const int16_t *  filter,
const int32_t filterPos,
int  filterSize 
)
static

Definition at line 65 of file swscale.c.

Referenced by sws_init_swScale_c().

static void hScale8To15_c ( SwsContext c,
int16_t *  dst,
int  dstW,
const uint8_t src,
const int16_t *  filter,
const int32_t filterPos,
int  filterSize 
)
static

Definition at line 118 of file swscale.c.

Referenced by sws_init_swScale_c().

static void hScale8To19_c ( SwsContext c,
int16_t *  _dst,
int  dstW,
const uint8_t src,
const int16_t *  filter,
const int32_t filterPos,
int  filterSize 
)
static

Definition at line 134 of file swscale.c.

Referenced by sws_init_swScale_c().

static av_always_inline void hyscale ( SwsContext c,
int16_t *  dst,
int  dstWidth,
const uint8_t src_in[4],
int  srcW,
int  xInc,
const int16_t *  hLumFilter,
const int32_t hLumFilterPos,
int  hLumFilterSize,
uint8_t formatConvBuffer,
uint32_t *  pal,
int  isAlpha 
)
static

Definition at line 239 of file swscale.c.

Referenced by swScale().

static void hyscale_fast_c ( SwsContext c,
int16_t *  dst,
int  dstWidth,
const uint8_t src,
int  srcW,
int  xInc 
)
static

Definition at line 223 of file swscale.c.

Referenced by sws_init_swScale_c().

static void lumRangeFromJpeg16_c ( int16_t *  _dst,
int  width 
)
static

Definition at line 215 of file swscale.c.

Referenced by sws_init_swScale_c().

static void lumRangeFromJpeg_c ( int16_t *  dst,
int  width 
)
static

Definition at line 178 of file swscale.c.

Referenced by sws_init_swScale_c().

static void lumRangeToJpeg16_c ( int16_t *  _dst,
int  width 
)
static

Definition at line 207 of file swscale.c.

Referenced by sws_init_swScale_c().

static void lumRangeToJpeg_c ( int16_t *  dst,
int  width 
)
static

Definition at line 171 of file swscale.c.

Referenced by sws_init_swScale_c().

static void reset_ptr ( const uint8_t src[],
int  format 
)
static

Definition at line 767 of file swscale.c.

Referenced by sws_scale().

static av_cold void sws_init_swScale_c ( SwsContext c)
static

Definition at line 704 of file swscale.c.

Referenced by ff_getSwsFunc().

static int swScale ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dst[],
int  dstStride[] 
)
static

Definition at line 331 of file swscale.c.

Referenced by ff_getSwsFunc().