#include "libavcodec/avcodec.h"
#include "libavcodec/dsputil.h"
#include "dsputil_sh4.h"
#include "qpel.c"
Go to the source code of this file.
Defines | |
#define | LP(p) *(uint32_t*)(p) |
#define | LPC(p) *(const uint32_t*)(p) |
#define | UNPACK(ph, pl, tt0, tt1) |
#define | rnd_PACK(ph, pl, nph, npl) ph + nph + (((pl + npl + BYTE_VEC32(0x02))>>2) & BYTE_VEC32(0x03)) |
#define | no_rnd_PACK(ph, pl, nph, npl) ph + nph + (((pl + npl + BYTE_VEC32(0x01))>>2) & BYTE_VEC32(0x03)) |
#define | MERGE1(a, b, ofs) (ofs==0)?a:( ((a)>>(8*ofs))|((b)<<(32-8*ofs)) ) |
#define | MERGE2(a, b, ofs) (ofs==3)?b:( ((a)>>(8*(ofs+1)))|((b)<<(32-8*(ofs+1))) ) |
#define | put(d, s) d = s |
#define | avg(d, s) d = rnd_avg32(s,d) |
#define | OP_C4(ofs) |
#define | OP_C40() |
#define | OP put |
#define | OP avg |
#define | OP_C(ofs, sz, avg2) |
#define | OP_C0(sz, avg2) |
#define | OP_X(ofs, sz, avg2) |
#define | OP_Y0(sz, avg2) |
#define | OP_Y(ofs, sz, avg2) |
#define | OP_X0(sz, avg2) OP_X(0,sz,avg2) |
#define | OP_XY0(sz, PACK) OP_XY(0,sz,PACK) |
#define | OP_XY(ofs, sz, PACK) |
#define | DEFFUNC(op, rnd, xy, sz, OP_N, avgfunc) |
#define | OP put |
#define | OP avg |
#define | put_no_rnd_pixels8_o put_rnd_pixels8_o |
#define | put_no_rnd_pixels16_o put_rnd_pixels16_o |
#define | avg_no_rnd_pixels8_o avg_rnd_pixels8_o |
#define | avg_no_rnd_pixels16_o avg_rnd_pixels16_o |
#define | put_pixels8_c put_rnd_pixels8_o |
#define | put_pixels16_c put_rnd_pixels16_o |
#define | avg_pixels8_c avg_rnd_pixels8_o |
#define | avg_pixels16_c avg_rnd_pixels16_o |
#define | put_no_rnd_pixels8_c put_rnd_pixels8_o |
#define | put_no_rnd_pixels16_c put_rnd_pixels16_o |
#define | avg_no_rnd_pixels8_c avg_rnd_pixels8_o |
#define | avg_no_rnd_pixels16_c avg_rnd_pixels16_o |
#define | QPEL |
#define | dspfunc(PFX, IDX, NUM) |
Functions | |
static void | put_pixels4_c (uint8_t *dest, const uint8_t *ref, const int stride, int height) |
static void | avg_pixels4_c (uint8_t *dest, const uint8_t *ref, const int stride, int height) |
void | dsputil_init_align (DSPContext *c, AVCodecContext *avctx) |
#define avg | ( | d, | |||
s | ) | d = rnd_avg32(s,d) |
Definition at line 51 of file dsputil_align.c.
Referenced by dering_TMPL(), do_apply_filter(), dsputil_init_mmx(), ff_diracdsp_init_mmx(), rearrange_lsp(), and x8_setup_spatial_compensation().
#define avg_no_rnd_pixels16_c avg_rnd_pixels16_o |
Definition at line 324 of file dsputil_align.c.
#define avg_no_rnd_pixels16_o avg_rnd_pixels16_o |
#define avg_no_rnd_pixels8_c avg_rnd_pixels8_o |
Definition at line 323 of file dsputil_align.c.
#define avg_no_rnd_pixels8_o avg_rnd_pixels8_o |
#define avg_pixels16_c avg_rnd_pixels16_o |
Definition at line 320 of file dsputil_align.c.
#define avg_pixels8_c avg_rnd_pixels8_o |
Definition at line 319 of file dsputil_align.c.
#define DEFFUNC | ( | op, | |||
rnd, | |||||
xy, | |||||
sz, | |||||
OP_N, | |||||
avgfunc | ) |
Value:
static void op##_##rnd##_pixels##sz##_##xy (uint8_t * dest, const uint8_t * ref, \ const int stride, int height) \ { \ switch((int)ref&3) { \ case 0:OP_N##0(sz,rnd##_##avgfunc); return; \ case 1:OP_N(1,sz,rnd##_##avgfunc); return; \ case 2:OP_N(2,sz,rnd##_##avgfunc); return; \ case 3:OP_N(3,sz,rnd##_##avgfunc); return; \ } \ }
Definition at line 263 of file dsputil_align.c.
#define dspfunc | ( | PFX, | |||
IDX, | |||||
NUM | ) |
Value:
c->PFX ## _pixels_tab[IDX][ 0] = PFX ## NUM ## _mc00_sh4; \ c->PFX ## _pixels_tab[IDX][ 1] = PFX ## NUM ## _mc10_sh4; \ c->PFX ## _pixels_tab[IDX][ 2] = PFX ## NUM ## _mc20_sh4; \ c->PFX ## _pixels_tab[IDX][ 3] = PFX ## NUM ## _mc30_sh4; \ c->PFX ## _pixels_tab[IDX][ 4] = PFX ## NUM ## _mc01_sh4; \ c->PFX ## _pixels_tab[IDX][ 5] = PFX ## NUM ## _mc11_sh4; \ c->PFX ## _pixels_tab[IDX][ 6] = PFX ## NUM ## _mc21_sh4; \ c->PFX ## _pixels_tab[IDX][ 7] = PFX ## NUM ## _mc31_sh4; \ c->PFX ## _pixels_tab[IDX][ 8] = PFX ## NUM ## _mc02_sh4; \ c->PFX ## _pixels_tab[IDX][ 9] = PFX ## NUM ## _mc12_sh4; \ c->PFX ## _pixels_tab[IDX][10] = PFX ## NUM ## _mc22_sh4; \ c->PFX ## _pixels_tab[IDX][11] = PFX ## NUM ## _mc32_sh4; \ c->PFX ## _pixels_tab[IDX][12] = PFX ## NUM ## _mc03_sh4; \ c->PFX ## _pixels_tab[IDX][13] = PFX ## NUM ## _mc13_sh4; \ c->PFX ## _pixels_tab[IDX][14] = PFX ## NUM ## _mc23_sh4; \ c->PFX ## _pixels_tab[IDX][15] = PFX ## NUM ## _mc33_sh4
#define LP | ( | p | ) | *(uint32_t*)(p) |
Definition at line 29 of file dsputil_align.c.
#define LPC | ( | p | ) | *(const uint32_t*)(p) |
Definition at line 30 of file dsputil_align.c.
#define MERGE1 | ( | a, | |||
b, | |||||
ofs | ) | (ofs==0)?a:( ((a)>>(8*ofs))|((b)<<(32-8*ofs)) ) |
Definition at line 42 of file dsputil_align.c.
#define MERGE2 | ( | a, | |||
b, | |||||
ofs | ) | (ofs==3)?b:( ((a)>>(8*(ofs+1)))|((b)<<(32-8*(ofs+1))) ) |
Definition at line 43 of file dsputil_align.c.
#define no_rnd_PACK | ( | ph, | |||
pl, | |||||
nph, | |||||
npl | ) | ph + nph + (((pl + npl + BYTE_VEC32(0x01))>>2) & BYTE_VEC32(0x03)) |
Definition at line 39 of file dsputil_align.c.
#define OP avg |
Definition at line 293 of file dsputil_align.c.
#define OP put |
Definition at line 293 of file dsputil_align.c.
#define OP avg |
Definition at line 293 of file dsputil_align.c.
#define OP put |
Definition at line 293 of file dsputil_align.c.
#define OP_C | ( | ofs, | |||
sz, | |||||
avg2 | ) |
Value:
{ \ ref-=ofs; \ do { \ uint32_t t0,t1; \ t0 = LPC(ref+0); \ t1 = LPC(ref+4); \ OP(LP(dest+0), MERGE1(t0,t1,ofs)); \ t0 = LPC(ref+8); \ OP(LP(dest+4), MERGE1(t1,t0,ofs)); \ if (sz==16) { \ t1 = LPC(ref+12); \ OP(LP(dest+8), MERGE1(t0,t1,ofs)); \ t0 = LPC(ref+16); \ OP(LP(dest+12), MERGE1(t1,t0,ofs)); \ } \ ref+=stride; \ dest+= stride; \ } while(--height); \ }
Definition at line 96 of file dsputil_align.c.
#define OP_C0 | ( | sz, | |||
avg2 | ) |
#define OP_C4 | ( | ofs | ) |
Value:
ref-=ofs; \ do { \ OP(LP(dest),MERGE1(LPC(ref),LPC(ref+4),ofs)); \ ref+=stride; \ dest+=stride; \ } while(--height)
Definition at line 53 of file dsputil_align.c.
Referenced by avg_pixels4_c(), and put_pixels4_c().
#define OP_C40 | ( | ) |
Value:
Definition at line 61 of file dsputil_align.c.
Referenced by avg_pixels4_c(), and put_pixels4_c().
#define OP_X | ( | ofs, | |||
sz, | |||||
avg2 | ) |
Value:
{ \ ref-=ofs; \ do { \ uint32_t t0,t1; \ t0 = LPC(ref+0); \ t1 = LPC(ref+4); \ OP(LP(dest+0), avg2(MERGE1(t0,t1,ofs),MERGE2(t0,t1,ofs))); \ t0 = LPC(ref+8); \ OP(LP(dest+4), avg2(MERGE1(t1,t0,ofs),MERGE2(t1,t0,ofs))); \ if (sz==16) { \ t1 = LPC(ref+12); \ OP(LP(dest+8), avg2(MERGE1(t0,t1,ofs),MERGE2(t0,t1,ofs))); \ t0 = LPC(ref+16); \ OP(LP(dest+12), avg2(MERGE1(t1,t0,ofs),MERGE2(t1,t0,ofs))); \ } \ ref+=stride; \ dest+= stride; \ } while(--height); \ }
Definition at line 132 of file dsputil_align.c.
#define OP_X0 | ( | sz, | |||
avg2 | ) | OP_X(0,sz,avg2) |
Definition at line 219 of file dsputil_align.c.
#define OP_XY | ( | ofs, | |||
sz, | |||||
PACK | ) |
Definition at line 221 of file dsputil_align.c.
#define OP_XY0 | ( | sz, | |||
PACK | ) | OP_XY(0,sz,PACK) |
Definition at line 220 of file dsputil_align.c.
#define OP_Y | ( | ofs, | |||
sz, | |||||
avg2 | ) |
Definition at line 181 of file dsputil_align.c.
#define OP_Y0 | ( | sz, | |||
avg2 | ) |
Value:
{ \ uint32_t t0,t1,t2,t3,t; \ \ t0 = LPC(ref+0); \ t1 = LPC(ref+4); \ if (sz==16) { \ t2 = LPC(ref+8); \ t3 = LPC(ref+12); \ } \ do { \ ref += stride; \ \ t = LPC(ref+0); \ OP(LP(dest+0), avg2(t0,t)); t0 = t; \ t = LPC(ref+4); \ OP(LP(dest+4), avg2(t1,t)); t1 = t; \ if (sz==16) { \ t = LPC(ref+8); \ OP(LP(dest+8), avg2(t2,t)); t2 = t; \ t = LPC(ref+12); \ OP(LP(dest+12), avg2(t3,t)); t3 = t; \ } \ dest+= stride; \ } while(--height); \ }
Definition at line 154 of file dsputil_align.c.
#define put | ( | d, | |||
s | ) | d = s |
Definition at line 50 of file dsputil_align.c.
Referenced by dsputil_init_mmx(), ff_diracdsp_init_mmx(), id3v2_put_ttag(), pixels16_xy2(), and pixels16_y2().
#define put_no_rnd_pixels16_c put_rnd_pixels16_o |
Definition at line 322 of file dsputil_align.c.
#define put_no_rnd_pixels16_o put_rnd_pixels16_o |
#define put_no_rnd_pixels8_c put_rnd_pixels8_o |
Definition at line 321 of file dsputil_align.c.
#define put_no_rnd_pixels8_o put_rnd_pixels8_o |
#define put_pixels16_c put_rnd_pixels16_o |
Definition at line 318 of file dsputil_align.c.
#define put_pixels8_c put_rnd_pixels8_o |
#define QPEL |
Definition at line 326 of file dsputil_align.c.
#define rnd_PACK | ( | ph, | |||
pl, | |||||
nph, | |||||
npl | ) | ph + nph + (((pl + npl + BYTE_VEC32(0x02))>>2) & BYTE_VEC32(0x03)) |
Definition at line 38 of file dsputil_align.c.
#define UNPACK | ( | ph, | |||
pl, | |||||
tt0, | |||||
tt1 | ) |
Value:
do { \ uint32_t t0,t1; t0=tt0;t1=tt1; \ ph = ( (t0 & ~BYTE_VEC32(0x03))>>2) + ( (t1 & ~BYTE_VEC32(0x03))>>2); \ pl = (t0 & BYTE_VEC32(0x03)) + (t1 & BYTE_VEC32(0x03)); } while(0)
Definition at line 33 of file dsputil_align.c.
static void avg_pixels4_c | ( | uint8_t * | dest, | |
const uint8_t * | ref, | |||
const int | stride, | |||
int | height | |||
) | [static] |
Definition at line 84 of file dsputil_align.c.
void dsputil_init_align | ( | DSPContext * | c, | |
AVCodecContext * | avctx | |||
) |
static void put_pixels4_c | ( | uint8_t * | dest, | |
const uint8_t * | ref, | |||
const int | stride, | |||
int | height | |||
) | [static] |
Definition at line 71 of file dsputil_align.c.