FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
dsputil_x86.h File Reference
#include <stddef.h>
#include <stdint.h>
#include "libavcodec/dsputil.h"
#include "libavutil/x86/asm.h"
#include "constants.h"

Go to the source code of this file.

Macros

#define MOVQ_WONE(regd)
 
#define JUMPALIGN()   __asm__ volatile (".p2align 3"::)
 
#define MOVQ_ZERO(regd)   __asm__ volatile ("pxor %%"#regd", %%"#regd ::)
 
#define MOVQ_BFE(regd)
 
#define MOVQ_WTWO(regd)   __asm__ volatile ("movq %0, %%"#regd" \n\t" :: "m"(ff_wtwo))
 
#define PAVGB_MMX_NO_RND(rega, regb, regr, regfe)
 
#define PAVGB_MMX(rega, regb, regr, regfe)
 
#define PAVGBP_MMX_NO_RND(rega, regb, regr,regc, regd, regp)
 
#define PAVGBP_MMX(rega, regb, regr, regc, regd, regp)
 
#define PIXELS16(STATIC, PFX1, PFX2, TYPE, CPUEXT)
 

Functions

void ff_dsputilenc_init_mmx (DSPContext *c, AVCodecContext *avctx)
 
void ff_dsputil_init_pix_mmx (DSPContext *c, AVCodecContext *avctx)
 
void ff_add_pixels_clamped_mmx (const int16_t *block, uint8_t *pixels, int line_size)
 
void ff_put_pixels_clamped_mmx (const int16_t *block, uint8_t *pixels, int line_size)
 
void ff_put_signed_pixels_clamped_mmx (const int16_t *block, uint8_t *pixels, int line_size)
 
void ff_clear_block_mmx (int16_t *block)
 
void ff_clear_block_sse (int16_t *block)
 
void ff_clear_blocks_mmx (int16_t *blocks)
 
void ff_clear_blocks_sse (int16_t *blocks)
 
void ff_add_bytes_mmx (uint8_t *dst, uint8_t *src, int w)
 
void ff_add_hfyu_median_prediction_cmov (uint8_t *dst, const uint8_t *top, const uint8_t *diff, int w, int *left, int *left_top)
 
void ff_draw_edges_mmx (uint8_t *buf, int wrap, int width, int height, int w, int h, int sides)
 
void ff_gmc_mmx (uint8_t *dst, uint8_t *src, int stride, int h, int ox, int oy, int dxx, int dxy, int dyx, int dyy, int shift, int r, int width, int height)
 
void ff_gmc_sse (uint8_t *dst, uint8_t *src, int stride, int h, int ox, int oy, int dxx, int dxy, int dyx, int dyy, int shift, int r, int width, int height)
 
void ff_vector_clipf_sse (float *dst, const float *src, float min, float max, int len)
 
void ff_avg_pixels8_mmx (uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
 
void ff_avg_pixels16_mmx (uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
 
void ff_put_pixels8_mmx (uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
 
void ff_put_pixels16_mmx (uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
 
void ff_avg_pixels8_mmxext (uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
 
void ff_put_pixels8_mmxext (uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
 
void ff_avg_pixels16_sse2 (uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
 
void ff_put_pixels16_sse2 (uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
 
void ff_avg_pixels8_x2_mmx (uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
 
void ff_avg_pixels8_xy2_mmx (uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
 
void ff_avg_pixels16_xy2_mmx (uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
 
void ff_put_pixels8_xy2_mmx (uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
 
void ff_put_pixels16_xy2_mmx (uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
 
void ff_mmx_idct (int16_t *block)
 
void ff_mmxext_idct (int16_t *block)
 
void ff_deinterlace_line_mmx (uint8_t *dst, const uint8_t *lum_m4, const uint8_t *lum_m3, const uint8_t *lum_m2, const uint8_t *lum_m1, const uint8_t *lum, int size)
 
void ff_deinterlace_line_inplace_mmx (const uint8_t *lum_m4, const uint8_t *lum_m3, const uint8_t *lum_m2, const uint8_t *lum_m1, const uint8_t *lum, int size)
 

Macro Definition Documentation

#define MOVQ_WONE (   regd)
Value:
__asm__ volatile ( \
"pcmpeqd %%" #regd ", %%" #regd " \n\t" \
"psrlw $15, %%" #regd ::)

Definition at line 32 of file dsputil_x86.h.

#define JUMPALIGN ( )    __asm__ volatile (".p2align 3"::)

Definition at line 37 of file dsputil_x86.h.

#define MOVQ_ZERO (   regd)    __asm__ volatile ("pxor %%"#regd", %%"#regd ::)

Definition at line 38 of file dsputil_x86.h.

Referenced by pixels8_xy2().

#define MOVQ_BFE (   regd)
Value:
__asm__ volatile ( \
"pcmpeqd %%"#regd", %%"#regd" \n\t" \
"paddb %%"#regd", %%"#regd" \n\t" ::)

Definition at line 40 of file dsputil_x86.h.

Referenced by pixels16_x2(), pixels8_x2(), and pixels8_y2().

#define MOVQ_WTWO (   regd)    __asm__ volatile ("movq %0, %%"#regd" \n\t" :: "m"(ff_wtwo))

Definition at line 46 of file dsputil_x86.h.

#define PAVGB_MMX_NO_RND (   rega,
  regb,
  regr,
  regfe 
)
Value:
"movq "#rega", "#regr" \n\t" \
"pand "#regb", "#regr" \n\t" \
"pxor "#rega", "#regb" \n\t" \
"pand "#regfe", "#regb" \n\t" \
"psrlq $1, "#regb" \n\t" \
"paddb "#regb", "#regr" \n\t"

Definition at line 61 of file dsputil_x86.h.

#define PAVGB_MMX (   rega,
  regb,
  regr,
  regfe 
)
Value:
"movq "#rega", "#regr" \n\t" \
"por "#regb", "#regr" \n\t" \
"pxor "#rega", "#regb" \n\t" \
"pand "#regfe", "#regb" \n\t" \
"psrlq $1, "#regb" \n\t" \
"psubb "#regb", "#regr" \n\t"

Definition at line 69 of file dsputil_x86.h.

#define PAVGBP_MMX_NO_RND (   rega,
  regb,
  regr,
  regc,
  regd,
  regp 
)
Value:
"movq "#rega", "#regr" \n\t" \
"movq "#regc", "#regp" \n\t" \
"pand "#regb", "#regr" \n\t" \
"pand "#regd", "#regp" \n\t" \
"pxor "#rega", "#regb" \n\t" \
"pxor "#regc", "#regd" \n\t" \
"pand %%mm6, "#regb" \n\t" \
"pand %%mm6, "#regd" \n\t" \
"psrlq $1, "#regb" \n\t" \
"psrlq $1, "#regd" \n\t" \
"paddb "#regb", "#regr" \n\t" \
"paddb "#regd", "#regp" \n\t"

Definition at line 78 of file dsputil_x86.h.

#define PAVGBP_MMX (   rega,
  regb,
  regr,
  regc,
  regd,
  regp 
)
Value:
"movq "#rega", "#regr" \n\t" \
"movq "#regc", "#regp" \n\t" \
"por "#regb", "#regr" \n\t" \
"por "#regd", "#regp" \n\t" \
"pxor "#rega", "#regb" \n\t" \
"pxor "#regc", "#regd" \n\t" \
"pand %%mm6, "#regb" \n\t" \
"pand %%mm6, "#regd" \n\t" \
"psrlq $1, "#regd" \n\t" \
"psrlq $1, "#regb" \n\t" \
"psubb "#regb", "#regr" \n\t" \
"psubb "#regd", "#regp" \n\t"

Definition at line 92 of file dsputil_x86.h.

#define PIXELS16 (   STATIC,
  PFX1,
  PFX2,
  TYPE,
  CPUEXT 
)
Value:
STATIC void PFX1 ## _pixels16 ## TYPE ## CPUEXT(uint8_t *block, \
const uint8_t *pixels, \
ptrdiff_t line_size, \
int h) \
{ \
PFX2 ## PFX1 ## _pixels8 ## TYPE ## CPUEXT(block, pixels, \
line_size, h); \
PFX2 ## PFX1 ## _pixels8 ## TYPE ## CPUEXT(block + 8, pixels + 8, \
line_size, h); \
}

Definition at line 186 of file dsputil_x86.h.

Function Documentation

void ff_dsputilenc_init_mmx ( DSPContext c,
AVCodecContext avctx 
)

Referenced by ff_dsputil_init_mmx().

void ff_dsputil_init_pix_mmx ( DSPContext c,
AVCodecContext avctx 
)

Definition at line 435 of file motion_est.c.

Referenced by hadamard_func().

void ff_add_pixels_clamped_mmx ( const int16_t *  block,
uint8_t pixels,
int  line_size 
)

Referenced by dsputil_init_mmx().

void ff_put_pixels_clamped_mmx ( const int16_t *  block,
uint8_t pixels,
int  line_size 
)

Referenced by dsputil_init_mmx().

void ff_put_signed_pixels_clamped_mmx ( const int16_t *  block,
uint8_t pixels,
int  line_size 
)

Referenced by dsputil_init_mmx().

void ff_clear_block_mmx ( int16_t *  block)

Referenced by dsputil_init_mmx().

void ff_clear_block_sse ( int16_t *  block)

Referenced by dsputil_init_sse().

void ff_clear_blocks_mmx ( int16_t *  blocks)

Referenced by dsputil_init_mmx().

void ff_clear_blocks_sse ( int16_t *  blocks)

Referenced by dsputil_init_sse().

void ff_add_bytes_mmx ( uint8_t dst,
uint8_t src,
int  w 
)

Referenced by dsputil_init_mmx().

void ff_add_hfyu_median_prediction_cmov ( uint8_t dst,
const uint8_t top,
const uint8_t diff,
int  w,
int *  left,
int *  left_top 
)

Referenced by ff_dsputil_init_mmx().

void ff_draw_edges_mmx ( uint8_t buf,
int  wrap,
int  width,
int  height,
int  w,
int  h,
int  sides 
)

Referenced by dsputil_init_mmx().

void ff_gmc_mmx ( uint8_t dst,
uint8_t src,
int  stride,
int  h,
int  ox,
int  oy,
int  dxx,
int  dxy,
int  dyx,
int  dyy,
int  shift,
int  r,
int  width,
int  height 
)

Referenced by dsputil_init_mmx().

void ff_gmc_sse ( uint8_t dst,
uint8_t src,
int  stride,
int  h,
int  ox,
int  oy,
int  dxx,
int  dxy,
int  dyx,
int  dyy,
int  shift,
int  r,
int  width,
int  height 
)

Referenced by dsputil_init_sse().

void ff_vector_clipf_sse ( float *  dst,
const float *  src,
float  min,
float  max,
int  len 
)

Referenced by dsputil_init_sse().

void ff_avg_pixels8_mmx ( uint8_t block,
const uint8_t pixels,
ptrdiff_t  line_size,
int  h 
)
void ff_avg_pixels16_mmx ( uint8_t block,
const uint8_t pixels,
ptrdiff_t  line_size,
int  h 
)
void ff_put_pixels8_mmx ( uint8_t block,
const uint8_t pixels,
ptrdiff_t  line_size,
int  h 
)
void ff_put_pixels16_mmx ( uint8_t block,
const uint8_t pixels,
ptrdiff_t  line_size,
int  h 
)
void ff_avg_pixels8_mmxext ( uint8_t block,
const uint8_t pixels,
ptrdiff_t  line_size,
int  h 
)

Referenced by hpeldsp_init_mmxext().

void ff_put_pixels8_mmxext ( uint8_t block,
const uint8_t pixels,
ptrdiff_t  line_size,
int  h 
)
void ff_avg_pixels16_sse2 ( uint8_t block,
const uint8_t pixels,
ptrdiff_t  line_size,
int  h 
)

Referenced by hpeldsp_init_sse2().

void ff_put_pixels16_sse2 ( uint8_t block,
const uint8_t pixels,
ptrdiff_t  line_size,
int  h 
)

Referenced by hpeldsp_init_sse2().

void ff_avg_pixels8_x2_mmx ( uint8_t block,
const uint8_t pixels,
ptrdiff_t  line_size,
int  h 
)
void ff_avg_pixels8_xy2_mmx ( uint8_t block,
const uint8_t pixels,
ptrdiff_t  line_size,
int  h 
)
void ff_avg_pixels16_xy2_mmx ( uint8_t block,
const uint8_t pixels,
ptrdiff_t  line_size,
int  h 
)
void ff_put_pixels8_xy2_mmx ( uint8_t block,
const uint8_t pixels,
ptrdiff_t  line_size,
int  h 
)
void ff_put_pixels16_xy2_mmx ( uint8_t block,
const uint8_t pixels,
ptrdiff_t  line_size,
int  h 
)
void ff_mmx_idct ( int16_t *  block)
void ff_mmxext_idct ( int16_t *  block)
void ff_deinterlace_line_mmx ( uint8_t dst,
const uint8_t lum_m4,
const uint8_t lum_m3,
const uint8_t lum_m2,
const uint8_t lum_m1,
const uint8_t lum,
int  size 
)
void ff_deinterlace_line_inplace_mmx ( const uint8_t lum_m4,
const uint8_t lum_m3,
const uint8_t lum_m2,
const uint8_t lum_m1,
const uint8_t lum,
int  size 
)