FFmpeg  4.0
Macros | Functions | Variables
swscale.c File Reference
#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/imgutils.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"

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

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 int swscale (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
 
av_cold void ff_sws_init_range_convert (SwsContext *c)
 
static av_cold void sws_init_swscale (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[], enum AVPixelFormat format)
 
static int check_image_pointers (const uint8_t *const data[4], enum AVPixelFormat pix_fmt, const int linesizes[4])
 
static void xyz12Torgb48 (struct SwsContext *c, uint16_t *dst, const uint16_t *src, int stride, int h)
 
static void rgb48Toxyz12 (struct SwsContext *c, uint16_t *dst, const uint16_t *src, int stride, int h)
 
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...
 

Variables

const uint8_t ff_dither_8x8_128 [9][8]
 
static const uint8_t sws_pb_64 [8]
 

Macro Definition Documentation

◆ DEBUG_SWSCALE_BUFFERS

#define DEBUG_SWSCALE_BUFFERS   0

Definition at line 226 of file swscale.c.

◆ DEBUG_BUFFERS

#define DEBUG_BUFFERS (   ...)
Value:
av_log(c, AV_LOG_DEBUG, __VA_ARGS__)
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
Definition: log.h:197
static double c[64]
#define DEBUG_SWSCALE_BUFFERS
Definition: swscale.c:226

Definition at line 227 of file swscale.c.

Referenced by swscale().

◆ RGB2YUV_SHIFT

#define RGB2YUV_SHIFT   15

◆ BY

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

Referenced by sws_scale().

◆ BV

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

Referenced by sws_scale().

◆ BU

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

Referenced by sws_scale().

◆ GY

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

Referenced by sws_scale().

◆ GV

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

Referenced by sws_scale().

◆ GU

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

Referenced by sws_scale().

◆ RY

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

Referenced by sws_scale().

◆ RV

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

Referenced by sws_scale().

◆ RU

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

Referenced by sws_scale().

Function Documentation

◆ fillPlane()

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

Definition at line 55 of file swscale.c.

Referenced by swscale().

◆ hScale16To19_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 66 of file swscale.c.

Referenced by sws_init_swscale().

◆ hScale16To15_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 93 of file swscale.c.

Referenced by sws_init_swscale().

◆ hScale8To15_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 119 of file swscale.c.

Referenced by sws_init_swscale().

◆ hScale8To19_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 135 of file swscale.c.

Referenced by sws_init_swscale().

◆ chrRangeToJpeg_c()

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

Definition at line 154 of file swscale.c.

Referenced by ff_sws_init_range_convert().

◆ chrRangeFromJpeg_c()

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

Definition at line 163 of file swscale.c.

Referenced by ff_sws_init_range_convert().

◆ lumRangeToJpeg_c()

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

Definition at line 172 of file swscale.c.

Referenced by ff_sws_init_range_convert().

◆ lumRangeFromJpeg_c()

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

Definition at line 179 of file swscale.c.

Referenced by ff_sws_init_range_convert().

◆ chrRangeToJpeg16_c()

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

Definition at line 186 of file swscale.c.

Referenced by ff_sws_init_range_convert().

◆ chrRangeFromJpeg16_c()

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

Definition at line 197 of file swscale.c.

Referenced by ff_sws_init_range_convert().

◆ lumRangeToJpeg16_c()

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

Definition at line 208 of file swscale.c.

Referenced by ff_sws_init_range_convert().

◆ lumRangeFromJpeg16_c()

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

Definition at line 217 of file swscale.c.

Referenced by ff_sws_init_range_convert().

◆ swscale()

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

Definition at line 231 of file swscale.c.

Referenced by ff_getSwsFunc(), ffprobe_show_library_versions(), and print_all_libs_info().

◆ ff_sws_init_range_convert()

av_cold void ff_sws_init_range_convert ( SwsContext c)

Definition at line 534 of file swscale.c.

Referenced by sws_init_swscale(), and sws_setColorspaceDetails().

◆ sws_init_swscale()

static av_cold void sws_init_swscale ( SwsContext c)
static

Definition at line 559 of file swscale.c.

Referenced by ff_getSwsFunc().

◆ ff_getSwsFunc()

SwsFunc ff_getSwsFunc ( SwsContext c)

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

Definition at line 592 of file swscale.c.

Referenced by sws_init_context(), and usePal().

◆ reset_ptr()

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

Definition at line 608 of file swscale.c.

Referenced by sws_scale().

◆ check_image_pointers()

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

Definition at line 620 of file swscale.c.

Referenced by sws_scale().

◆ xyz12Torgb48()

static void xyz12Torgb48 ( struct SwsContext c,
uint16_t *  dst,
const uint16_t *  src,
int  stride,
int  h 
)
static

Definition at line 637 of file swscale.c.

Referenced by sws_scale().

◆ rgb48Toxyz12()

static void rgb48Toxyz12 ( struct SwsContext c,
uint16_t *  dst,
const uint16_t *  src,
int  stride,
int  h 
)
static

Definition at line 693 of file swscale.c.

Referenced by sws_scale().

Variable Documentation

◆ ff_dither_8x8_128

const uint8_t ff_dither_8x8_128[9][8]
Initial value:
= {
{ 36, 68, 60, 92, 34, 66, 58, 90, },
{ 100, 4, 124, 28, 98, 2, 122, 26, },
{ 52, 84, 44, 76, 50, 82, 42, 74, },
{ 116, 20, 108, 12, 114, 18, 106, 10, },
{ 32, 64, 56, 88, 38, 70, 62, 94, },
{ 96, 0, 120, 24, 102, 6, 126, 30, },
{ 48, 80, 40, 72, 54, 86, 46, 78, },
{ 112, 16, 104, 8, 118, 22, 110, 14, },
{ 36, 68, 60, 92, 34, 66, 58, 90, },
}

Definition at line 39 of file swscale.c.

Referenced by swscale(), and usePal().

◆ sws_pb_64

const uint8_t sws_pb_64[8]
static
Initial value:
= {
64, 64, 64, 64, 64, 64, 64, 64
}

Definition at line 51 of file swscale.c.

Referenced by swscale().