FFmpeg
Loading...
Searching...
No Matches
me_cmp_altivec.c File Reference
#include "config.h"
#include "libavutil/attributes.h"
#include "libavutil/ppc/util_altivec.h"
#include "libavcodec/avcodec.h"
#include "libavcodec/mpegvideo.h"
#include "libavcodec/me_cmp.h"
#include "me_cmp_altivec.h"

Go to the source code of this file.

Macros

#define GET_PERM(per1, per2, pix)
 
#define LOAD_PIX(v, iv, pix, per1, per2)
 
#define ONEITERBUTTERFLY(i, res)
 
#define ONEITERBUTTERFLY(i, res1, res2)
 

Functions

static int sad16_x2_altivec (MPVEncContext *v, const uint8_t *pix1, const uint8_t *pix2, ptrdiff_t stride, int h)
 
static int sad16_y2_altivec (MPVEncContext *v, const uint8_t *pix1, const uint8_t *pix2, ptrdiff_t stride, int h)
 
static int sad16_xy2_altivec (MPVEncContext *v, const uint8_t *pix1, const uint8_t *pix2, ptrdiff_t stride, int h)
 
static int sad16_altivec (MPVEncContext *v, const uint8_t *pix1, const uint8_t *pix2, ptrdiff_t stride, int h)
 
static int sad8_altivec (MPVEncContext *v, const uint8_t *pix1, const uint8_t *pix2, ptrdiff_t stride, int h)
 
static int sse8_altivec (MPVEncContext *v, const uint8_t *pix1, const uint8_t *pix2, ptrdiff_t stride, int h)
 
static int sse16_altivec (MPVEncContext *v, const uint8_t *pix1, const uint8_t *pix2, ptrdiff_t stride, int h)
 
static int hadamard8_diff8x8_altivec (MPVEncContext *s, const uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int h)
 
static int hadamard8_diff16x8_altivec (MPVEncContext *s, const uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int h)
 
static int hadamard8_diff16_altivec (MPVEncContext *s, const uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int h)
 
av_cold void ff_me_cmp_init_altivec (MECmpContext *c, AVCodecContext *avctx)
 

Macro Definition Documentation

◆ GET_PERM

#define GET_PERM ( per1,
per2,
pix )
Value:
{}

Definition at line 46 of file me_cmp_altivec.c.

Referenced by sad16_x2_altivec(), and sad16_xy2_altivec().

◆ LOAD_PIX

#define LOAD_PIX ( v,
iv,
pix,
per1,
per2 )
Value:
{\
v = vec_vsx_ld(0, pix);\
iv = vec_vsx_ld(1, pix);\
}
enum AVPixelFormat pix
Definition ohcodec.c:55

Definition at line 47 of file me_cmp_altivec.c.

Referenced by sad16_x2_altivec(), and sad16_xy2_altivec().

◆ ONEITERBUTTERFLY [1/2]

#define ONEITERBUTTERFLY ( i,
res )
Value:
{ \
register vector unsigned char srcO = unaligned_load(stride * i, src); \
register vector unsigned char dstO = unaligned_load(stride * i, dst);\
\
/* Promote the unsigned chars to signed shorts. */ \
/* We're in the 8x8 function, we only care for the first 8. */ \
register vector signed short srcV = \
(vector signed short) VEC_MERGEH((vector signed char) vzero, \
(vector signed char) srcO); \
register vector signed short dstV = \
(vector signed short) VEC_MERGEH((vector signed char) vzero, \
(vector signed char) dstO); \
\
/* subtractions inside the first butterfly */ \
register vector signed short but0 = vec_sub(srcV, dstV); \
register vector signed short op1 = vec_perm(but0, but0, perm1); \
register vector signed short but1 = vec_mladd(but0, vprod1, op1); \
register vector signed short op2 = vec_perm(but1, but1, perm2); \
register vector signed short but2 = vec_mladd(but1, vprod2, op2); \
register vector signed short op3 = vec_perm(but2, but2, perm3); \
res = vec_mladd(but2, vprod3, op3); \
}
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:97
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63
#define stride
#define vzero
Definition swscale_vsx.c:35
#define src
Definition vp8dsp.c:248

Referenced by hadamard8_diff16x8_altivec(), and hadamard8_diff8x8_altivec().

◆ ONEITERBUTTERFLY [2/2]

#define ONEITERBUTTERFLY ( i,
res1,
res2 )

Function Documentation

◆ sad16_x2_altivec()

static int sad16_x2_altivec ( MPVEncContext * v,
const uint8_t * pix1,
const uint8_t * pix2,
ptrdiff_t stride,
int h )
static

Definition at line 52 of file me_cmp_altivec.c.

Referenced by ff_me_cmp_init_altivec().

◆ sad16_y2_altivec()

static int sad16_y2_altivec ( MPVEncContext * v,
const uint8_t * pix1,
const uint8_t * pix2,
ptrdiff_t stride,
int h )
static

Definition at line 92 of file me_cmp_altivec.c.

Referenced by ff_me_cmp_init_altivec().

◆ sad16_xy2_altivec()

static int sad16_xy2_altivec ( MPVEncContext * v,
const uint8_t * pix1,
const uint8_t * pix2,
ptrdiff_t stride,
int h )
static

Definition at line 142 of file me_cmp_altivec.c.

Referenced by ff_me_cmp_init_altivec().

◆ sad16_altivec()

static int sad16_altivec ( MPVEncContext * v,
const uint8_t * pix1,
const uint8_t * pix2,
ptrdiff_t stride,
int h )
static

Definition at line 231 of file me_cmp_altivec.c.

Referenced by ff_me_cmp_init_altivec().

◆ sad8_altivec()

static int sad8_altivec ( MPVEncContext * v,
const uint8_t * pix1,
const uint8_t * pix2,
ptrdiff_t stride,
int h )
static

Definition at line 266 of file me_cmp_altivec.c.

Referenced by ff_me_cmp_init_altivec().

◆ sse8_altivec()

static int sse8_altivec ( MPVEncContext * v,
const uint8_t * pix1,
const uint8_t * pix2,
ptrdiff_t stride,
int h )
static

Definition at line 310 of file me_cmp_altivec.c.

Referenced by ff_me_cmp_init_altivec().

◆ sse16_altivec()

static int sse16_altivec ( MPVEncContext * v,
const uint8_t * pix1,
const uint8_t * pix2,
ptrdiff_t stride,
int h )
static

Definition at line 355 of file me_cmp_altivec.c.

Referenced by ff_me_cmp_init_altivec().

◆ hadamard8_diff8x8_altivec()

static int hadamard8_diff8x8_altivec ( MPVEncContext * s,
const uint8_t * dst,
const uint8_t * src,
ptrdiff_t stride,
int h )
static

Definition at line 393 of file me_cmp_altivec.c.

Referenced by ff_me_cmp_init_altivec().

◆ hadamard8_diff16x8_altivec()

static int hadamard8_diff16x8_altivec ( MPVEncContext * s,
const uint8_t * dst,
const uint8_t * src,
ptrdiff_t stride,
int h )
static

Definition at line 519 of file me_cmp_altivec.c.

Referenced by hadamard8_diff16_altivec().

◆ hadamard8_diff16_altivec()

static int hadamard8_diff16_altivec ( MPVEncContext * s,
const uint8_t * dst,
const uint8_t * src,
ptrdiff_t stride,
int h )
static

Definition at line 710 of file me_cmp_altivec.c.

Referenced by ff_me_cmp_init_altivec().

◆ ff_me_cmp_init_altivec()

av_cold void ff_me_cmp_init_altivec ( MECmpContext * c,
AVCodecContext * avctx )

Definition at line 723 of file me_cmp_altivec.c.

Referenced by ff_me_cmp_init_ppc().