FFmpeg
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions | Variables
dsputil_mmx.c File Reference
#include "libavutil/attributes.h"
#include "libavutil/cpu.h"
#include "libavutil/x86/asm.h"
#include "libavcodec/dsputil.h"
#include "libavcodec/h264dsp.h"
#include "libavcodec/mpegvideo.h"
#include "libavcodec/simple_idct.h"
#include "libavcodec/videodsp.h"
#include "dsputil_mmx.h"
#include "idct_xvid.h"
#include "diracdsp_mmx.h"

Go to the source code of this file.

Macros

#define SET_QPEL_FUNCS(PFX, IDX, SIZE, CPU, PREFIX)
 
#define SET_HPEL_FUNCS(PFX, IDX, SIZE, CPU)
 

Functions

void ff_h263_v_loop_filter_mmx (uint8_t *src, int stride, int qscale)
 
void ff_h263_h_loop_filter_mmx (uint8_t *src, int stride, int qscale)
 
void ff_put_pixels16_sse2 (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)
 
int32_t ff_scalarproduct_int16_mmxext (const int16_t *v1, const int16_t *v2, int order)
 
int32_t ff_scalarproduct_int16_sse2 (const int16_t *v1, const int16_t *v2, int order)
 
int32_t ff_scalarproduct_and_madd_int16_mmxext (int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul)
 
int32_t ff_scalarproduct_and_madd_int16_sse2 (int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul)
 
int32_t ff_scalarproduct_and_madd_int16_ssse3 (int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul)
 
void ff_apply_window_int16_round_mmxext (int16_t *output, const int16_t *input, const int16_t *window, unsigned int len)
 
void ff_apply_window_int16_round_sse2 (int16_t *output, const int16_t *input, const int16_t *window, unsigned int len)
 
void ff_apply_window_int16_mmxext (int16_t *output, const int16_t *input, const int16_t *window, unsigned int len)
 
void ff_apply_window_int16_sse2 (int16_t *output, const int16_t *input, const int16_t *window, unsigned int len)
 
void ff_apply_window_int16_ssse3 (int16_t *output, const int16_t *input, const int16_t *window, unsigned int len)
 
void ff_apply_window_int16_ssse3_atom (int16_t *output, const int16_t *input, const int16_t *window, unsigned int len)
 
void ff_bswap32_buf_ssse3 (uint32_t *dst, const uint32_t *src, int w)
 
void ff_bswap32_buf_sse2 (uint32_t *dst, const uint32_t *src, int w)
 
void ff_add_hfyu_median_prediction_mmxext (uint8_t *dst, const uint8_t *top, const uint8_t *diff, int w, int *left, int *left_top)
 
int ff_add_hfyu_left_prediction_ssse3 (uint8_t *dst, const uint8_t *src, int w, int left)
 
int ff_add_hfyu_left_prediction_sse4 (uint8_t *dst, const uint8_t *src, int w, int left)
 
void ff_vector_clip_int32_mmx (int32_t *dst, const int32_t *src, int32_t min, int32_t max, unsigned int len)
 
void ff_vector_clip_int32_sse2 (int32_t *dst, const int32_t *src, int32_t min, int32_t max, unsigned int len)
 
void ff_vector_clip_int32_int_sse2 (int32_t *dst, const int32_t *src, int32_t min, int32_t max, unsigned int len)
 
void ff_vector_clip_int32_sse4 (int32_t *dst, const int32_t *src, int32_t min, int32_t max, unsigned int len)
 
static av_cold void dsputil_init_mmx (DSPContext *c, AVCodecContext *avctx, int mm_flags)
 
static av_cold void dsputil_init_mmxext (DSPContext *c, AVCodecContext *avctx, int mm_flags)
 
static av_cold void dsputil_init_3dnow (DSPContext *c, AVCodecContext *avctx, int mm_flags)
 
static av_cold void dsputil_init_sse (DSPContext *c, AVCodecContext *avctx, int mm_flags)
 
static av_cold void dsputil_init_sse2 (DSPContext *c, AVCodecContext *avctx, int mm_flags)
 
static av_cold void dsputil_init_ssse3 (DSPContext *c, AVCodecContext *avctx, int mm_flags)
 
static av_cold void dsputil_init_sse4 (DSPContext *c, AVCodecContext *avctx, int mm_flags)
 
av_cold void ff_dsputil_init_mmx (DSPContext *c, AVCodecContext *avctx)
 

Variables

const uint64_t ff_bone = 0x0101010101010101ULL
 
const uint64_t ff_wtwo = 0x0002000200020002ULL
 
const xmm_reg ff_pw_1 = { 0x0001000100010001ULL, 0x0001000100010001ULL }
 
const xmm_reg ff_pw_2 = { 0x0002000200020002ULL, 0x0002000200020002ULL }
 
const xmm_reg ff_pw_3 = { 0x0003000300030003ULL, 0x0003000300030003ULL }
 
const xmm_reg ff_pw_4 = { 0x0004000400040004ULL, 0x0004000400040004ULL }
 
const xmm_reg ff_pw_5 = { 0x0005000500050005ULL, 0x0005000500050005ULL }
 
const xmm_reg ff_pw_8 = { 0x0008000800080008ULL, 0x0008000800080008ULL }
 
const xmm_reg ff_pw_9 = { 0x0009000900090009ULL, 0x0009000900090009ULL }
 
const uint64_t ff_pw_15 = 0x000F000F000F000FULL
 
const xmm_reg ff_pw_16 = { 0x0010001000100010ULL, 0x0010001000100010ULL }
 
const xmm_reg ff_pw_17 = { 0x0011001100110011ULL, 0x0011001100110011ULL }
 
const xmm_reg ff_pw_18 = { 0x0012001200120012ULL, 0x0012001200120012ULL }
 
const uint64_t ff_pw_20 = 0x0014001400140014ULL
 
const xmm_reg ff_pw_27 = { 0x001B001B001B001BULL, 0x001B001B001B001BULL }
 
const xmm_reg ff_pw_28 = { 0x001C001C001C001CULL, 0x001C001C001C001CULL }
 
const xmm_reg ff_pw_32 = { 0x0020002000200020ULL, 0x0020002000200020ULL }
 
const uint64_t ff_pw_42 = 0x002A002A002A002AULL
 
const uint64_t ff_pw_53 = 0x0035003500350035ULL
 
const xmm_reg ff_pw_63 = { 0x003F003F003F003FULL, 0x003F003F003F003FULL }
 
const xmm_reg ff_pw_64 = { 0x0040004000400040ULL, 0x0040004000400040ULL }
 
const uint64_t ff_pw_96 = 0x0060006000600060ULL
 
const uint64_t ff_pw_128 = 0x0080008000800080ULL
 
const uint64_t ff_pw_255 = 0x00ff00ff00ff00ffULL
 
const xmm_reg ff_pw_512 = { 0x0200020002000200ULL, 0x0200020002000200ULL }
 
const xmm_reg ff_pw_1019 = { 0x03FB03FB03FB03FBULL, 0x03FB03FB03FB03FBULL }
 
const xmm_reg ff_pb_0 = { 0x0000000000000000ULL, 0x0000000000000000ULL }
 
const xmm_reg ff_pb_1 = { 0x0101010101010101ULL, 0x0101010101010101ULL }
 
const xmm_reg ff_pb_3 = { 0x0303030303030303ULL, 0x0303030303030303ULL }
 
const xmm_reg ff_pb_4 = { 0x0404040404040404ULL, 0x0404040404040404ULL }
 
const uint64_t ff_pb_7 = 0x0707070707070707ULL
 
const uint64_t ff_pb_1F = 0x1F1F1F1F1F1F1F1FULL
 
const uint64_t ff_pb_3F = 0x3F3F3F3F3F3F3F3FULL
 
const xmm_reg ff_pb_80 = { 0x8080808080808080ULL, 0x8080808080808080ULL }
 
const uint64_t ff_pb_81 = 0x8181818181818181ULL
 
const xmm_reg ff_pb_A1 = { 0xA1A1A1A1A1A1A1A1ULL, 0xA1A1A1A1A1A1A1A1ULL }
 
const xmm_reg ff_pb_F8 = { 0xF8F8F8F8F8F8F8F8ULL, 0xF8F8F8F8F8F8F8F8ULL }
 
const uint64_t ff_pb_FC = 0xFCFCFCFCFCFCFCFCULL
 
const xmm_reg ff_pb_FE = { 0xFEFEFEFEFEFEFEFEULL, 0xFEFEFEFEFEFEFEFEULL }
 
const double ff_pd_1 [2] = { 1.0, 1.0 }
 
const double ff_pd_2 [2] = { 2.0, 2.0 }
 

Macro Definition Documentation

#define SET_QPEL_FUNCS (   PFX,
  IDX,
  SIZE,
  CPU,
  PREFIX 
)
Value:
do { \
c->PFX ## _pixels_tab[IDX][ 0] = PREFIX ## PFX ## SIZE ## _mc00_ ## CPU; \
c->PFX ## _pixels_tab[IDX][ 1] = PREFIX ## PFX ## SIZE ## _mc10_ ## CPU; \
c->PFX ## _pixels_tab[IDX][ 2] = PREFIX ## PFX ## SIZE ## _mc20_ ## CPU; \
c->PFX ## _pixels_tab[IDX][ 3] = PREFIX ## PFX ## SIZE ## _mc30_ ## CPU; \
c->PFX ## _pixels_tab[IDX][ 4] = PREFIX ## PFX ## SIZE ## _mc01_ ## CPU; \
c->PFX ## _pixels_tab[IDX][ 5] = PREFIX ## PFX ## SIZE ## _mc11_ ## CPU; \
c->PFX ## _pixels_tab[IDX][ 6] = PREFIX ## PFX ## SIZE ## _mc21_ ## CPU; \
c->PFX ## _pixels_tab[IDX][ 7] = PREFIX ## PFX ## SIZE ## _mc31_ ## CPU; \
c->PFX ## _pixels_tab[IDX][ 8] = PREFIX ## PFX ## SIZE ## _mc02_ ## CPU; \
c->PFX ## _pixels_tab[IDX][ 9] = PREFIX ## PFX ## SIZE ## _mc12_ ## CPU; \
c->PFX ## _pixels_tab[IDX][10] = PREFIX ## PFX ## SIZE ## _mc22_ ## CPU; \
c->PFX ## _pixels_tab[IDX][11] = PREFIX ## PFX ## SIZE ## _mc32_ ## CPU; \
c->PFX ## _pixels_tab[IDX][12] = PREFIX ## PFX ## SIZE ## _mc03_ ## CPU; \
c->PFX ## _pixels_tab[IDX][13] = PREFIX ## PFX ## SIZE ## _mc13_ ## CPU; \
c->PFX ## _pixels_tab[IDX][14] = PREFIX ## PFX ## SIZE ## _mc23_ ## CPU; \
c->PFX ## _pixels_tab[IDX][15] = PREFIX ## PFX ## SIZE ## _mc33_ ## CPU; \
} while (0)

Definition at line 1560 of file dsputil_mmx.c.

Referenced by dsputil_init_mmxext().

#define SET_HPEL_FUNCS (   PFX,
  IDX,
  SIZE,
  CPU 
)
Value:
do { \
c->PFX ## _pixels_tab IDX [0] = PFX ## _pixels ## SIZE ## _ ## CPU; \
c->PFX ## _pixels_tab IDX [1] = PFX ## _pixels ## SIZE ## _x2_ ## CPU; \
c->PFX ## _pixels_tab IDX [2] = PFX ## _pixels ## SIZE ## _y2_ ## CPU; \
c->PFX ## _pixels_tab IDX [3] = PFX ## _pixels ## SIZE ## _xy2_ ## CPU; \
} while (0)

Definition at line 1580 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

Function Documentation

void ff_h263_v_loop_filter_mmx ( uint8_t src,
int  stride,
int  qscale 
)

Referenced by dsputil_init_mmx().

void ff_h263_h_loop_filter_mmx ( uint8_t src,
int  stride,
int  qscale 
)

Referenced by dsputil_init_mmx().

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

Referenced by dsputil_init_sse2().

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

Referenced by dsputil_init_sse2().

int32_t ff_scalarproduct_int16_mmxext ( const int16_t *  v1,
const int16_t *  v2,
int  order 
)

Referenced by dsputil_init_mmxext().

int32_t ff_scalarproduct_int16_sse2 ( const int16_t *  v1,
const int16_t *  v2,
int  order 
)

Referenced by dsputil_init_sse2().

int32_t ff_scalarproduct_and_madd_int16_mmxext ( int16_t *  v1,
const int16_t *  v2,
const int16_t *  v3,
int  order,
int  mul 
)

Referenced by dsputil_init_mmxext().

int32_t ff_scalarproduct_and_madd_int16_sse2 ( int16_t *  v1,
const int16_t *  v2,
const int16_t *  v3,
int  order,
int  mul 
)

Referenced by dsputil_init_sse2().

int32_t ff_scalarproduct_and_madd_int16_ssse3 ( int16_t *  v1,
const int16_t *  v2,
const int16_t *  v3,
int  order,
int  mul 
)

Referenced by dsputil_init_ssse3().

void ff_apply_window_int16_round_mmxext ( int16_t *  output,
const int16_t *  input,
const int16_t *  window,
unsigned int  len 
)

Referenced by dsputil_init_mmxext().

void ff_apply_window_int16_round_sse2 ( int16_t *  output,
const int16_t *  input,
const int16_t *  window,
unsigned int  len 
)

Referenced by dsputil_init_sse2().

void ff_apply_window_int16_mmxext ( int16_t *  output,
const int16_t *  input,
const int16_t *  window,
unsigned int  len 
)

Referenced by dsputil_init_mmxext().

void ff_apply_window_int16_sse2 ( int16_t *  output,
const int16_t *  input,
const int16_t *  window,
unsigned int  len 
)

Referenced by dsputil_init_sse2().

void ff_apply_window_int16_ssse3 ( int16_t *  output,
const int16_t *  input,
const int16_t *  window,
unsigned int  len 
)

Referenced by dsputil_init_ssse3().

void ff_apply_window_int16_ssse3_atom ( int16_t *  output,
const int16_t *  input,
const int16_t *  window,
unsigned int  len 
)

Referenced by dsputil_init_ssse3().

void ff_bswap32_buf_ssse3 ( uint32_t *  dst,
const uint32_t *  src,
int  w 
)

Referenced by dsputil_init_ssse3().

void ff_bswap32_buf_sse2 ( uint32_t *  dst,
const uint32_t *  src,
int  w 
)

Referenced by dsputil_init_sse2().

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

Referenced by dsputil_init_mmxext().

int ff_add_hfyu_left_prediction_ssse3 ( uint8_t dst,
const uint8_t src,
int  w,
int  left 
)

Referenced by dsputil_init_ssse3().

int ff_add_hfyu_left_prediction_sse4 ( uint8_t dst,
const uint8_t src,
int  w,
int  left 
)

Referenced by dsputil_init_ssse3().

void ff_vector_clip_int32_mmx ( int32_t dst,
const int32_t src,
int32_t  min,
int32_t  max,
unsigned int  len 
)

Referenced by dsputil_init_mmx().

void ff_vector_clip_int32_sse2 ( int32_t dst,
const int32_t src,
int32_t  min,
int32_t  max,
unsigned int  len 
)

Referenced by dsputil_init_sse2().

void ff_vector_clip_int32_int_sse2 ( int32_t dst,
const int32_t src,
int32_t  min,
int32_t  max,
unsigned int  len 
)

Referenced by dsputil_init_sse2().

void ff_vector_clip_int32_sse4 ( int32_t dst,
const int32_t src,
int32_t  min,
int32_t  max,
unsigned int  len 
)

Referenced by dsputil_init_sse4().

static av_cold void dsputil_init_mmx ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
)
static

Definition at line 1588 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

static av_cold void dsputil_init_mmxext ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
)
static

Definition at line 1630 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

static av_cold void dsputil_init_3dnow ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
)
static

Definition at line 1696 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

static av_cold void dsputil_init_sse ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
)
static

Definition at line 1736 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

static av_cold void dsputil_init_sse2 ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
)
static

Definition at line 1760 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

static av_cold void dsputil_init_ssse3 ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
)
static

Definition at line 1801 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

static av_cold void dsputil_init_sse4 ( DSPContext c,
AVCodecContext avctx,
int  mm_flags 
)
static

Definition at line 1819 of file dsputil_mmx.c.

Referenced by ff_dsputil_init_mmx().

av_cold void ff_dsputil_init_mmx ( DSPContext c,
AVCodecContext avctx 
)

Definition at line 1827 of file dsputil_mmx.c.

Referenced by ff_dsputil_init().

Variable Documentation

const uint64_t ff_bone = 0x0101010101010101ULL

Definition at line 41 of file dsputil_mmx.c.

const uint64_t ff_wtwo = 0x0002000200020002ULL

Definition at line 42 of file dsputil_mmx.c.

const xmm_reg ff_pw_1 = { 0x0001000100010001ULL, 0x0001000100010001ULL }

Definition at line 44 of file dsputil_mmx.c.

const xmm_reg ff_pw_2 = { 0x0002000200020002ULL, 0x0002000200020002ULL }

Definition at line 45 of file dsputil_mmx.c.

const xmm_reg ff_pw_3 = { 0x0003000300030003ULL, 0x0003000300030003ULL }

Definition at line 46 of file dsputil_mmx.c.

const xmm_reg ff_pw_4 = { 0x0004000400040004ULL, 0x0004000400040004ULL }

Definition at line 47 of file dsputil_mmx.c.

const xmm_reg ff_pw_5 = { 0x0005000500050005ULL, 0x0005000500050005ULL }

Definition at line 48 of file dsputil_mmx.c.

const xmm_reg ff_pw_8 = { 0x0008000800080008ULL, 0x0008000800080008ULL }

Definition at line 49 of file dsputil_mmx.c.

const xmm_reg ff_pw_9 = { 0x0009000900090009ULL, 0x0009000900090009ULL }

Definition at line 50 of file dsputil_mmx.c.

const uint64_t ff_pw_15 = 0x000F000F000F000FULL

Definition at line 51 of file dsputil_mmx.c.

const xmm_reg ff_pw_16 = { 0x0010001000100010ULL, 0x0010001000100010ULL }

Definition at line 52 of file dsputil_mmx.c.

const xmm_reg ff_pw_17 = { 0x0011001100110011ULL, 0x0011001100110011ULL }

Definition at line 53 of file dsputil_mmx.c.

const xmm_reg ff_pw_18 = { 0x0012001200120012ULL, 0x0012001200120012ULL }

Definition at line 54 of file dsputil_mmx.c.

const uint64_t ff_pw_20 = 0x0014001400140014ULL

Definition at line 55 of file dsputil_mmx.c.

const xmm_reg ff_pw_27 = { 0x001B001B001B001BULL, 0x001B001B001B001BULL }

Definition at line 56 of file dsputil_mmx.c.

const xmm_reg ff_pw_28 = { 0x001C001C001C001CULL, 0x001C001C001C001CULL }

Definition at line 57 of file dsputil_mmx.c.

const xmm_reg ff_pw_32 = { 0x0020002000200020ULL, 0x0020002000200020ULL }

Definition at line 58 of file dsputil_mmx.c.

const uint64_t ff_pw_42 = 0x002A002A002A002AULL

Definition at line 59 of file dsputil_mmx.c.

const uint64_t ff_pw_53 = 0x0035003500350035ULL

Definition at line 60 of file dsputil_mmx.c.

const xmm_reg ff_pw_63 = { 0x003F003F003F003FULL, 0x003F003F003F003FULL }

Definition at line 61 of file dsputil_mmx.c.

const xmm_reg ff_pw_64 = { 0x0040004000400040ULL, 0x0040004000400040ULL }

Definition at line 62 of file dsputil_mmx.c.

const uint64_t ff_pw_96 = 0x0060006000600060ULL

Definition at line 63 of file dsputil_mmx.c.

const uint64_t ff_pw_128 = 0x0080008000800080ULL

Definition at line 64 of file dsputil_mmx.c.

const uint64_t ff_pw_255 = 0x00ff00ff00ff00ffULL

Definition at line 65 of file dsputil_mmx.c.

const xmm_reg ff_pw_512 = { 0x0200020002000200ULL, 0x0200020002000200ULL }

Definition at line 66 of file dsputil_mmx.c.

const xmm_reg ff_pw_1019 = { 0x03FB03FB03FB03FBULL, 0x03FB03FB03FB03FBULL }

Definition at line 67 of file dsputil_mmx.c.

const xmm_reg ff_pb_0 = { 0x0000000000000000ULL, 0x0000000000000000ULL }

Definition at line 69 of file dsputil_mmx.c.

const xmm_reg ff_pb_1 = { 0x0101010101010101ULL, 0x0101010101010101ULL }

Definition at line 70 of file dsputil_mmx.c.

const xmm_reg ff_pb_3 = { 0x0303030303030303ULL, 0x0303030303030303ULL }

Definition at line 71 of file dsputil_mmx.c.

const xmm_reg ff_pb_4 = { 0x0404040404040404ULL, 0x0404040404040404ULL }

Definition at line 72 of file dsputil_mmx.c.

const uint64_t ff_pb_7 = 0x0707070707070707ULL

Definition at line 73 of file dsputil_mmx.c.

const uint64_t ff_pb_1F = 0x1F1F1F1F1F1F1F1FULL

Definition at line 74 of file dsputil_mmx.c.

const uint64_t ff_pb_3F = 0x3F3F3F3F3F3F3F3FULL

Definition at line 75 of file dsputil_mmx.c.

const xmm_reg ff_pb_80 = { 0x8080808080808080ULL, 0x8080808080808080ULL }

Definition at line 76 of file dsputil_mmx.c.

const uint64_t ff_pb_81 = 0x8181818181818181ULL

Definition at line 77 of file dsputil_mmx.c.

const xmm_reg ff_pb_A1 = { 0xA1A1A1A1A1A1A1A1ULL, 0xA1A1A1A1A1A1A1A1ULL }

Definition at line 78 of file dsputil_mmx.c.

const xmm_reg ff_pb_F8 = { 0xF8F8F8F8F8F8F8F8ULL, 0xF8F8F8F8F8F8F8F8ULL }

Definition at line 79 of file dsputil_mmx.c.

const uint64_t ff_pb_FC = 0xFCFCFCFCFCFCFCFCULL

Definition at line 80 of file dsputil_mmx.c.

const xmm_reg ff_pb_FE = { 0xFEFEFEFEFEFEFEFEULL, 0xFEFEFEFEFEFEFEFEULL }

Definition at line 81 of file dsputil_mmx.c.

const double ff_pd_1[2] = { 1.0, 1.0 }

Definition at line 83 of file dsputil_mmx.c.

const double ff_pd_2[2] = { 2.0, 2.0 }

Definition at line 84 of file dsputil_mmx.c.