swscale_altivec.c File Reference
#include <inttypes.h>
#include "config.h"
#include "libswscale/swscale.h"
#include "libswscale/swscale_internal.h"
#include "libavutil/attributes.h"
#include "libavutil/cpu.h"
#include "yuv2rgb_altivec.h"
Include dependency graph for swscale_altivec.c:

Go to the source code of this file.

Macros

#define vzero   vec_splat_s32(0)
 
#define yuv2planeX_8(d1, d2, l1, src, x, perm, filter)
 

Functions

static void yuv2planeX_16_altivec (const int16_t *filter, int filterSize, const int16_t **src, uint8_t *dest, const uint8_t *dither, int offset, int x)
 
static void yuv2planeX_u (const int16_t *filter, int filterSize, const int16_t **src, uint8_t *dest, int dstW, const uint8_t *dither, int offset, int x)
 
static void yuv2planeX_altivec (const int16_t *filter, int filterSize, const int16_t **src, uint8_t *dest, int dstW, const uint8_t *dither, int offset)
 
static void hScale_altivec_real (SwsContext *c, int16_t *dst, int dstW, const uint8_t *src, const int16_t *filter, const int32_t *filterPos, int filterSize)
 
av_cold void ff_sws_init_swScale_altivec (SwsContext *c)
 

Macro Definition Documentation

#define vzero   vec_splat_s32(0)
#define yuv2planeX_8 (   d1,
  d2,
  l1,
  src,
  x,
  perm,
  filter 
)
Value:
do { \
vector signed short l2 = vec_ld(((x) << 1) + 16, src); \
vector signed short ls = vec_perm(l1, l2, perm); \
vector signed int i1 = vec_mule(filter, ls); \
vector signed int i2 = vec_mulo(filter, ls); \
vector signed int vf1 = vec_mergeh(i1, i2); \
vector signed int vf2 = vec_mergel(i1, i2); \
d1 = vec_add(d1, vf1); \
d2 = vec_add(d2, vf2); \
l1 = l2; \
} while (0)
the mask is usually to keep the same permissions Filters should remove permissions on reference they give to output whenever necessary It can be automatically done by setting the rej_perms field on the output pad Here are a few guidelines corresponding to common then the filter should push the output frames on the output link immediately As an exception to the previous rule if the input frame is enough to produce several output frames then the filter needs output only at least one per link The additional frames can be left buffered in the filter
Discrete Time axis x
init variable d2
perm
Definition: f_perms.c:74
AVS_Value src
Definition: avisynth_c.h:523

Definition at line 35 of file swscale_altivec.c.

Referenced by yuv2planeX_16_altivec().

Function Documentation

av_cold void ff_sws_init_swScale_altivec ( SwsContext c)

Definition at line 288 of file swscale_altivec.c.

Referenced by ff_getSwsFunc(), and usePal().

static void hScale_altivec_real ( 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 120 of file swscale_altivec.c.

Referenced by ff_sws_init_swScale_altivec().

static void yuv2planeX_16_altivec ( const int16_t *  filter,
int  filterSize,
const int16_t **  src,
uint8_t dest,
const uint8_t dither,
int  offset,
int  x 
)
static

Definition at line 47 of file swscale_altivec.c.

Referenced by yuv2planeX_altivec().

static void yuv2planeX_altivec ( const int16_t *  filter,
int  filterSize,
const int16_t **  src,
uint8_t dest,
int  dstW,
const uint8_t dither,
int  offset 
)
static

Definition at line 104 of file swscale_altivec.c.

Referenced by ff_sws_init_swScale_altivec().

static void yuv2planeX_u ( const int16_t *  filter,
int  filterSize,
const int16_t **  src,
uint8_t dest,
int  dstW,
const uint8_t dither,
int  offset,
int  x 
)
inlinestatic

Definition at line 90 of file swscale_altivec.c.

Referenced by yuv2planeX_altivec().