FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
dsputil_mmx.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)
 

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_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 JUMPALIGN ( )    __asm__ volatile (".p2align 3"::)

Definition at line 37 of file dsputil_mmx.h.

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

Definition at line 40 of file dsputil_mmx.h.

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

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

Definition at line 32 of file dsputil_mmx.h.

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

Definition at line 46 of file dsputil_mmx.h.

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

Definition at line 38 of file dsputil_mmx.h.

Referenced by pixels8_xy2().

#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_mmx.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_mmx.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_mmx.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_mmx.h.

Function Documentation

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

Referenced by dsputil_init_mmx().

void ff_avg_pixels16_mmx ( 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_avg_pixels16_xy2_mmx ( uint8_t block,
const uint8_t pixels,
ptrdiff_t  line_size,
int  h 
)
void ff_avg_pixels8_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_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_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 
)
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_dsputil_init_pix_mmx ( DSPContext c,
AVCodecContext avctx 
)

Definition at line 435 of file motion_est.c.

Referenced by hadamard_func().

void ff_dsputilenc_init_mmx ( DSPContext c,
AVCodecContext avctx 
)

Referenced by ff_dsputil_init_mmx().

void ff_mmx_idct ( int16_t *  block)
void ff_mmxext_idct ( int16_t *  block)
void ff_put_pixels16_mmx ( 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 
)

Referenced by hpeldsp_init_sse2().

void ff_put_pixels16_xy2_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_pixels8_mmxext ( 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_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().