#include "libavcodec/dsputil.h"
#include "dsputil_alpha.h"
#include "asm.h"
Go to the source code of this file.
Defines | |
#define | OP(LOAD, STORE) |
#define | OP_X2(LOAD, STORE) |
#define | OP_Y2(LOAD, STORE) |
#define | OP_XY2(LOAD, STORE) |
#define | MAKE_OP(OPNAME, SUFF, OPKIND, STORE) |
#define | PIXOP(OPNAME, STORE) |
#define | AVG2 avg2 |
#define | AVG4 avg4 |
#define | AVG4_ROUNDER BYTE_VEC(0x02) |
#define | STORE(l, b) stq(l, b) |
#define | STORE(l, b) stq(AVG2(l, ldq(b)), b); |
#define | AVG2 avg2_no_rnd |
#define | AVG4 avg4_no_rnd |
#define | AVG4_ROUNDER BYTE_VEC(0x01) |
#define | STORE(l, b) stq(l, b) |
#define | STORE(l, b) stq(AVG2(l, ldq(b)), b); |
Functions | |
static void | clear_blocks_axp (DCTELEM *blocks) |
static uint64_t | avg2_no_rnd (uint64_t a, uint64_t b) |
static uint64_t | avg2 (uint64_t a, uint64_t b) |
PIXOP (put, STORE) | |
PIXOP (avg, STORE) | |
PIXOP (put_no_rnd, STORE) | |
PIXOP (avg_no_rnd, STORE) | |
static void | put_pixels16_axp_asm (uint8_t *block, const uint8_t *pixels, int line_size, int h) |
void | dsputil_init_alpha (DSPContext *c, AVCodecContext *avctx) |
Variables | |
void(* | put_pixels_clamped_axp_p )(const DCTELEM *block, uint8_t *pixels, int line_size) |
void(* | add_pixels_clamped_axp_p )(const DCTELEM *block, uint8_t *pixels, int line_size) |
#define AVG2 avg2_no_rnd |
Definition at line 254 of file dsputil_alpha.c.
#define AVG2 avg2 |
Definition at line 254 of file dsputil_alpha.c.
#define AVG4 avg4_no_rnd |
Definition at line 255 of file dsputil_alpha.c.
#define AVG4 avg4 |
Definition at line 255 of file dsputil_alpha.c.
#define AVG4_ROUNDER BYTE_VEC(0x01) |
Definition at line 256 of file dsputil_alpha.c.
#define AVG4_ROUNDER BYTE_VEC(0x02) |
Definition at line 256 of file dsputil_alpha.c.
#define MAKE_OP | ( | OPNAME, | |||
SUFF, | |||||
OPKIND, | |||||
STORE | ) |
Value:
static void OPNAME ## _pixels ## SUFF ## _axp \ (uint8_t *restrict block, const uint8_t *restrict pixels, \ int line_size, int h) \ { \ if ((size_t) pixels & 0x7) { \ OPKIND(uldq, STORE); \ } else { \ OPKIND(ldq, STORE); \ } \ } \ \ static void OPNAME ## _pixels16 ## SUFF ## _axp \ (uint8_t *restrict block, const uint8_t *restrict pixels, \ int line_size, int h) \ { \ OPNAME ## _pixels ## SUFF ## _axp(block, pixels, line_size, h); \ OPNAME ## _pixels ## SUFF ## _axp(block + 8, pixels + 8, line_size, h); \ }
Definition at line 212 of file dsputil_alpha.c.
#define OP | ( | LOAD, | |||
STORE | ) |
Value:
Definition at line 149 of file dsputil_alpha.c.
Referenced by decode_frame(), put_no_rnd_pixels8_y2_iwmmxt(), put_pixels8_y2_iwmmxt(), and tempNoiseReducer_TMPL().
#define OP_X2 | ( | LOAD, | |||
STORE | ) |
#define OP_XY2 | ( | LOAD, | |||
STORE | ) |
Value:
do { \ uint64_t pix1 = LOAD(pixels); \ uint64_t pix2 = pix1 >> 8 | ((uint64_t) pixels[8] << 56); \ uint64_t pix_l = (pix1 & BYTE_VEC(0x03)) \ + (pix2 & BYTE_VEC(0x03)); \ uint64_t pix_h = ((pix1 & ~BYTE_VEC(0x03)) >> 2) \ + ((pix2 & ~BYTE_VEC(0x03)) >> 2); \ \ do { \ uint64_t npix1, npix2; \ uint64_t npix_l, npix_h; \ uint64_t avg; \ \ pixels += line_size; \ npix1 = LOAD(pixels); \ npix2 = npix1 >> 8 | ((uint64_t) pixels[8] << 56); \ npix_l = (npix1 & BYTE_VEC(0x03)) \ + (npix2 & BYTE_VEC(0x03)); \ npix_h = ((npix1 & ~BYTE_VEC(0x03)) >> 2) \ + ((npix2 & ~BYTE_VEC(0x03)) >> 2); \ avg = (((pix_l + npix_l + AVG4_ROUNDER) >> 2) & BYTE_VEC(0x03)) \ + pix_h + npix_h; \ STORE(avg, block); \ \ block += line_size; \ pix_l = npix_l; \ pix_h = npix_h; \ } while (--h); \ } while (0)
Definition at line 181 of file dsputil_alpha.c.
#define OP_Y2 | ( | LOAD, | |||
STORE | ) |
#define PIXOP | ( | OPNAME, | |||
STORE | ) |
#define STORE | ( | l, | |||
b | ) | stq(AVG2(l, ldq(b)), b); |
Definition at line 261 of file dsputil_alpha.c.
#define STORE | ( | l, | |||
b | ) | stq(l, b) |
Definition at line 261 of file dsputil_alpha.c.
#define STORE | ( | l, | |||
b | ) | stq(AVG2(l, ldq(b)), b); |
Definition at line 261 of file dsputil_alpha.c.
#define STORE | ( | l, | |||
b | ) | stq(l, b) |
Definition at line 261 of file dsputil_alpha.c.
Referenced by doVertDefFilter_altivec(), and store_slice_c().
static uint64_t avg2 | ( | uint64_t | a, | |
uint64_t | b | |||
) | [inline, static] |
Definition at line 126 of file dsputil_alpha.c.
static uint64_t avg2_no_rnd | ( | uint64_t | a, | |
uint64_t | b | |||
) | [inline, static] |
Definition at line 121 of file dsputil_alpha.c.
static void clear_blocks_axp | ( | DCTELEM * | blocks | ) | [static] |
void dsputil_init_alpha | ( | DSPContext * | c, | |
AVCodecContext * | avctx | |||
) |
PIXOP | ( | avg_no_rnd | , | |
STORE | ||||
) |
PIXOP | ( | put_no_rnd | , | |
STORE | ||||
) |
PIXOP | ( | avg | , | |
STORE | ||||
) |
PIXOP | ( | put | , | |
STORE | ||||
) |
static void put_pixels16_axp_asm | ( | uint8_t * | block, | |
const uint8_t * | pixels, | |||
int | line_size, | |||
int | h | |||
) | [static] |
void(* add_pixels_clamped_axp_p)(const DCTELEM *block, uint8_t *pixels, int line_size) |
Referenced by dsputil_init_alpha(), and ff_simple_idct_add_axp().
void(* put_pixels_clamped_axp_p)(const DCTELEM *block, uint8_t *pixels, int line_size) |
Referenced by dsputil_init_alpha(), and ff_simple_idct_put_axp().