Libav
Macros | Functions | Variables
me_cmp.c File Reference
#include "libavutil/attributes.h"
#include "avcodec.h"
#include "copy_block.h"
#include "simple_idct.h"
#include "me_cmp.h"
#include "mpegvideo.h"
#include "config.h"

Go to the source code of this file.

Macros

#define avg2(a, b)   ((a + b + 1) >> 1)
 
#define avg4(a, b, c, d)   ((a + b + c + d + 2) >> 2)
 
#define BUTTERFLY2(o1, o2, i1, i2)
 
#define BUTTERFLY1(x, y)
 
#define BUTTERFLYA(x, y)   (FFABS((x) + (y)) + FFABS((x) - (y)))
 
#define VSAD_INTRA(size)
 
#define SQ(a)   ((a) * (a))
 
#define VSSE_INTRA(size)
 
#define WRAPPER8_16_SQ(name8, name16)
 
#define SET_CMP_FUNC(name)
 

Functions

static int sse4_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
 
static int sse8_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
 
static int sse16_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
 
static int sum_abs_dctelem_c (int16_t *block)
 
static int pix_abs16_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
 
static int pix_abs16_x2_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
 
static int pix_abs16_y2_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
 
static int pix_abs16_xy2_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
 
static int pix_abs8_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
 
static int pix_abs8_x2_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
 
static int pix_abs8_y2_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
 
static int pix_abs8_xy2_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)
 
static int nsse16_c (MpegEncContext *c, uint8_t *s1, uint8_t *s2, int stride, int h)
 
static int nsse8_c (MpegEncContext *c, uint8_t *s1, uint8_t *s2, int stride, int h)
 
static int zero_cmp (MpegEncContext *s, uint8_t *a, uint8_t *b, int stride, int h)
 
void ff_set_cmp (MECmpContext *c, me_cmp_func *cmp, int type)
 
static int hadamard8_diff8x8_c (MpegEncContext *s, uint8_t *dst, uint8_t *src, int stride, int h)
 
static int hadamard8_intra8x8_c (MpegEncContext *s, uint8_t *src, uint8_t *dummy, int stride, int h)
 
static int dct_sad8x8_c (MpegEncContext *s, uint8_t *src1, uint8_t *src2, int stride, int h)
 
static int dct_max8x8_c (MpegEncContext *s, uint8_t *src1, uint8_t *src2, int stride, int h)
 
static int quant_psnr8x8_c (MpegEncContext *s, uint8_t *src1, uint8_t *src2, int stride, int h)
 
static int rd8x8_c (MpegEncContext *s, uint8_t *src1, uint8_t *src2, int stride, int h)
 
static int bit8x8_c (MpegEncContext *s, uint8_t *src1, uint8_t *src2, int stride, int h)
 
static int vsad16_c (MpegEncContext *c, uint8_t *s1, uint8_t *s2, int stride, int h)
 
static int vsse16_c (MpegEncContext *c, uint8_t *s1, uint8_t *s2, int stride, int h)
 
av_cold void ff_me_cmp_init_static (void)
 
av_cold void ff_me_cmp_init (MECmpContext *c, AVCodecContext *avctx)
 

Variables

uint32_t ff_square_tab [512] = { 0, }
 

Macro Definition Documentation

#define avg2 (   a,
  b 
)    ((a + b + 1) >> 1)

Definition at line 106 of file me_cmp.c.

Referenced by pix_abs16_x2_c(), pix_abs16_y2_c(), pix_abs8_x2_c(), and pix_abs8_y2_c().

#define avg4 (   a,
  b,
  c,
 
)    ((a + b + c + d + 2) >> 2)

Definition at line 107 of file me_cmp.c.

Referenced by pix_abs16_xy2_c(), and pix_abs8_xy2_c().

#define BUTTERFLY2 (   o1,
  o2,
  i1,
  i2 
)
Value:
o1 = (i1) + (i2); \
o2 = (i1) - (i2);

Definition at line 417 of file me_cmp.c.

Referenced by hadamard8_diff8x8_c(), and hadamard8_intra8x8_c().

#define BUTTERFLY1 (   x,
 
)
Value:
{ \
int a, b; \
a = x; \
b = y; \
x = a + b; \
y = a - b; \
}
#define b
Definition: input.c:52

Definition at line 421 of file me_cmp.c.

Referenced by hadamard8_diff8x8_c(), and hadamard8_intra8x8_c().

#define BUTTERFLYA (   x,
 
)    (FFABS((x) + (y)) + FFABS((x) - (y)))

Definition at line 430 of file me_cmp.c.

Referenced by hadamard8_diff8x8_c(), and hadamard8_intra8x8_c().

#define VSAD_INTRA (   size)
Value:
static int vsad_intra ## size ## _c(MpegEncContext *c, \
uint8_t *s, uint8_t *dummy, \
int stride, int h) \
{ \
int score = 0, x, y; \
for (y = 1; y < h; y++) { \
for (x = 0; x < size; x += 4) { \
score += FFABS(s[x] - s[x + stride]) + \
FFABS(s[x + 1] - s[x + stride + 1]) + \
FFABS(s[x + 2] - s[x + 2 + stride]) + \
FFABS(s[x + 3] - s[x + 3 + stride]); \
} \
s += stride; \
} \
\
return score; \
}
int size
int stride
Definition: mace.c:144
uint8_t
return
#define FFABS(a)
Definition: common.h:52
MpegEncContext.
Definition: mpegvideo.h:204
for(j=16;j >0;--j)

Definition at line 782 of file me_cmp.c.

#define SQ (   a)    ((a) * (a))

Definition at line 819 of file me_cmp.c.

Referenced by vsse16_c().

#define VSSE_INTRA (   size)
Value:
static int vsse_intra ## size ## _c(MpegEncContext *c, \
uint8_t *s, uint8_t *dummy, \
int stride, int h) \
{ \
int score = 0, x, y; \
for (y = 1; y < h; y++) { \
for (x = 0; x < size; x += 4) { \
score += SQ(s[x] - s[x + stride]) + \
SQ(s[x + 1] - s[x + stride + 1]) + \
SQ(s[x + 2] - s[x + stride + 2]) + \
SQ(s[x + 3] - s[x + stride + 3]); \
} \
s += stride; \
} \
\
return score; \
}
int size
int stride
Definition: mace.c:144
uint8_t
return
#define SQ(a)
Definition: me_cmp.c:819
MpegEncContext.
Definition: mpegvideo.h:204
for(j=16;j >0;--j)

Definition at line 820 of file me_cmp.c.

#define WRAPPER8_16_SQ (   name8,
  name16 
)
Value:
static int name16(MpegEncContext *s, uint8_t *dst, uint8_t *src, \
int stride, int h) \
{ \
int score = 0; \
\
score += name8(s, dst, src, stride, 8); \
score += name8(s, dst + 8, src + 8, stride, 8); \
if (h == 16) { \
dst += 8 * stride; \
src += 8 * stride; \
score += name8(s, dst, src, stride, 8); \
score += name8(s, dst + 8, src + 8, stride, 8); \
} \
return score; \
}
int stride
Definition: mace.c:144
uint8_t
return
if(ac->has_optimized_func)
MpegEncContext.
Definition: mpegvideo.h:204

Definition at line 857 of file me_cmp.c.

#define SET_CMP_FUNC (   name)
Value:
c->name[0] = name ## 16_c; \
c->name[1] = name ## 8x8_c;
const char * name

Referenced by ff_me_cmp_init().

Function Documentation

static int sse4_c ( MpegEncContext v,
uint8_t pix1,
uint8_t pix2,
int  line_size,
int  h 
)
static

Definition at line 29 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int sse8_c ( MpegEncContext v,
uint8_t pix1,
uint8_t pix2,
int  line_size,
int  h 
)
static

Definition at line 46 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int sse16_c ( MpegEncContext v,
uint8_t pix1,
uint8_t pix2,
int  line_size,
int  h 
)
static

Definition at line 67 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int sum_abs_dctelem_c ( int16_t *  block)
static

Definition at line 97 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int pix_abs16_c ( MpegEncContext v,
uint8_t pix1,
uint8_t pix2,
int  line_size,
int  h 
)
inlinestatic

Definition at line 109 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int pix_abs16_x2_c ( MpegEncContext v,
uint8_t pix1,
uint8_t pix2,
int  line_size,
int  h 
)
static

Definition at line 137 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int pix_abs16_y2_c ( MpegEncContext v,
uint8_t pix1,
uint8_t pix2,
int  line_size,
int  h 
)
static

Definition at line 165 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int pix_abs16_xy2_c ( MpegEncContext v,
uint8_t pix1,
uint8_t pix2,
int  line_size,
int  h 
)
static

Definition at line 195 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int pix_abs8_c ( MpegEncContext v,
uint8_t pix1,
uint8_t pix2,
int  line_size,
int  h 
)
inlinestatic

Definition at line 225 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int pix_abs8_x2_c ( MpegEncContext v,
uint8_t pix1,
uint8_t pix2,
int  line_size,
int  h 
)
static

Definition at line 245 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int pix_abs8_y2_c ( MpegEncContext v,
uint8_t pix1,
uint8_t pix2,
int  line_size,
int  h 
)
static

Definition at line 265 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int pix_abs8_xy2_c ( MpegEncContext v,
uint8_t pix1,
uint8_t pix2,
int  line_size,
int  h 
)
static

Definition at line 287 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int nsse16_c ( MpegEncContext c,
uint8_t s1,
uint8_t s2,
int  stride,
int  h 
)
static

Definition at line 309 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int nsse8_c ( MpegEncContext c,
uint8_t s1,
uint8_t s2,
int  stride,
int  h 
)
static

Definition at line 333 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int zero_cmp ( MpegEncContext s,
uint8_t a,
uint8_t b,
int  stride,
int  h 
)
static

Definition at line 357 of file me_cmp.c.

Referenced by ff_set_cmp().

void ff_set_cmp ( MECmpContext c,
me_cmp_func cmp,
int  type 
)

Definition at line 363 of file me_cmp.c.

Referenced by dvvideo_encode_init(), ff_init_me(), and ff_mpv_encode_init().

static int hadamard8_diff8x8_c ( MpegEncContext s,
uint8_t dst,
uint8_t src,
int  stride,
int  h 
)
static

Definition at line 432 of file me_cmp.c.

static int hadamard8_intra8x8_c ( MpegEncContext s,
uint8_t src,
uint8_t dummy,
int  stride,
int  h 
)
static

Definition at line 484 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int dct_sad8x8_c ( MpegEncContext s,
uint8_t src1,
uint8_t src2,
int  stride,
int  h 
)
static

Definition at line 536 of file me_cmp.c.

static int dct_max8x8_c ( MpegEncContext s,
uint8_t src1,
uint8_t src2,
int  stride,
int  h 
)
static

Definition at line 602 of file me_cmp.c.

static int quant_psnr8x8_c ( MpegEncContext s,
uint8_t src1,
uint8_t src2,
int  stride,
int  h 
)
static

Definition at line 619 of file me_cmp.c.

static int rd8x8_c ( MpegEncContext s,
uint8_t src1,
uint8_t src2,
int  stride,
int  h 
)
static

Definition at line 644 of file me_cmp.c.

static int bit8x8_c ( MpegEncContext s,
uint8_t src1,
uint8_t src2,
int  stride,
int  h 
)
static

Definition at line 721 of file me_cmp.c.

static int vsad16_c ( MpegEncContext c,
uint8_t s1,
uint8_t s2,
int  stride,
int  h 
)
static

Definition at line 804 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int vsse16_c ( MpegEncContext c,
uint8_t s1,
uint8_t s2,
int  stride,
int  h 
)
static

Definition at line 842 of file me_cmp.c.

Referenced by ff_me_cmp_init().

av_cold void ff_me_cmp_init_static ( void  )

Definition at line 885 of file me_cmp.c.

Referenced by avcodec_init().

av_cold void ff_me_cmp_init ( MECmpContext c,
AVCodecContext avctx 
)

Variable Documentation

uint32_t ff_square_tab[512] = { 0, }

Definition at line 27 of file me_cmp.c.

Referenced by ff_me_cmp_init_static(), pix_norm1_c(), sse(), sse16_c(), sse4_c(), and sse8_c().