FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions | Variables
me_cmp.c File Reference
#include "libavutil/attributes.h"
#include "libavutil/internal.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 V(x)   (pix1[x] - pix2[x])
 
#define V(x)   (pix1[x] - pix2[x])
 
#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 VSAD(size)
 
#define SQ(a)   ((a) * (a))
 
#define VSSE_INTRA(size)
 
#define VSSE(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, ptrdiff_t stride, int h)
 
static int sse8_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, ptrdiff_t stride, int h)
 
static int sse16_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, ptrdiff_t stride, int h)
 
static int sum_abs_dctelem_c (int16_t *block)
 
static int pix_abs16_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, ptrdiff_t stride, int h)
 
static int pix_median_abs16_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, ptrdiff_t stride, int h)
 
static int pix_abs16_x2_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, ptrdiff_t stride, int h)
 
static int pix_abs16_y2_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, ptrdiff_t stride, int h)
 
static int pix_abs16_xy2_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, ptrdiff_t stride, int h)
 
static int pix_abs8_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, ptrdiff_t stride, int h)
 
static int pix_median_abs8_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, ptrdiff_t stride, int h)
 
static int pix_abs8_x2_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, ptrdiff_t stride, int h)
 
static int pix_abs8_y2_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, ptrdiff_t stride, int h)
 
static int pix_abs8_xy2_c (MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, ptrdiff_t stride, int h)
 
static int nsse16_c (MpegEncContext *c, uint8_t *s1, uint8_t *s2, ptrdiff_t stride, int h)
 
static int nsse8_c (MpegEncContext *c, uint8_t *s1, uint8_t *s2, ptrdiff_t stride, int h)
 
static int zero_cmp (MpegEncContext *s, uint8_t *a, uint8_t *b, ptrdiff_t 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, ptrdiff_t stride, int h)
 
static int hadamard8_intra8x8_c (MpegEncContext *s, uint8_t *src, uint8_t *dummy, ptrdiff_t stride, int h)
 
static int dct_sad8x8_c (MpegEncContext *s, uint8_t *src1, uint8_t *src2, ptrdiff_t stride, int h)
 
static int dct_max8x8_c (MpegEncContext *s, uint8_t *src1, uint8_t *src2, ptrdiff_t stride, int h)
 
static int quant_psnr8x8_c (MpegEncContext *s, uint8_t *src1, uint8_t *src2, ptrdiff_t stride, int h)
 
static int rd8x8_c (MpegEncContext *s, uint8_t *src1, uint8_t *src2, ptrdiff_t stride, int h)
 
static int bit8x8_c (MpegEncContext *s, uint8_t *src1, uint8_t *src2, ptrdiff_t stride, int h)
 
av_cold void ff_me_cmp_init_static (void)
 
int ff_check_alignment (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 111 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 112 of file me_cmp.c.

Referenced by pix_abs16_xy2_c(), and pix_abs8_xy2_c().

#define V (   x)    (pix1[x] - pix2[x])
#define V (   x)    (pix1[x] - pix2[x])
#define BUTTERFLY2 (   o1,
  o2,
  i1,
  i2 
)
Value:
o1 = (i1) + (i2); \
o2 = (i1) - (i2);

Definition at line 505 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; \
}
const char * b
Definition: vf_curves.c:113
int

Definition at line 509 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 518 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, \
ptrdiff_t 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; \
}
const char * s
Definition: avisynth_c.h:768
uint8_t
ptrdiff_t size
Definition: opengl_enc.c:101
return
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
Definition: common.h:72
int dummy
Definition: motion.c:64
MpegEncContext.
Definition: mpegvideo.h:78
int
GLint GLenum GLboolean GLsizei stride
Definition: opengl_enc.c:105
static double c[64]
#define stride
for(j=16;j >0;--j)

Definition at line 870 of file me_cmp.c.

#define VSAD (   size)
Value:
static int vsad ## size ## _c(MpegEncContext *c, \
ptrdiff_t stride, int h) \
{ \
int score = 0, x, y; \
for (y = 1; y < h; y++) { \
for (x = 0; x < size; x++) \
score += FFABS(s1[x] - s2[x] - s1[x + stride] + s2[x + stride]); \
s2 += stride; \
} \
\
return score; \
}
uint8_t
ptrdiff_t size
Definition: opengl_enc.c:101
#define s2
Definition: regdef.h:39
return
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
Definition: common.h:72
#define s1
Definition: regdef.h:38
MpegEncContext.
Definition: mpegvideo.h:78
int
GLint GLenum GLboolean GLsizei stride
Definition: opengl_enc.c:105
static double c[64]
#define stride
for(j=16;j >0;--j)

Definition at line 892 of file me_cmp.c.

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

Definition at line 911 of file me_cmp.c.

#define VSSE_INTRA (   size)
Value:
static int vsse_intra ## size ## _c(MpegEncContext *c, \
ptrdiff_t 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; \
}
const char * s
Definition: avisynth_c.h:768
uint8_t
ptrdiff_t size
Definition: opengl_enc.c:101
return
int dummy
Definition: motion.c:64
#define SQ(a)
Definition: me_cmp.c:911
MpegEncContext.
Definition: mpegvideo.h:78
int
GLint GLenum GLboolean GLsizei stride
Definition: opengl_enc.c:105
static double c[64]
#define stride
for(j=16;j >0;--j)

Definition at line 912 of file me_cmp.c.

#define VSSE (   size)
Value:
static int vsse ## size ## _c(MpegEncContext *c, uint8_t *s1, uint8_t *s2, \
ptrdiff_t stride, int h) \
{ \
int score = 0, x, y; \
for (y = 1; y < h; y++) { \
for (x = 0; x < size; x++) \
score += SQ(s1[x] - s2[x] - s1[x + stride] + s2[x + stride]); \
s2 += stride; \
} \
\
return score; \
}
uint8_t
ptrdiff_t size
Definition: opengl_enc.c:101
#define s2
Definition: regdef.h:39
return
#define s1
Definition: regdef.h:38
#define SQ(a)
Definition: me_cmp.c:911
MpegEncContext.
Definition: mpegvideo.h:78
int
GLint GLenum GLboolean GLsizei stride
Definition: opengl_enc.c:105
static double c[64]
#define stride
for(j=16;j >0;--j)

Definition at line 934 of file me_cmp.c.

#define WRAPPER8_16_SQ (   name8,
  name16 
)
Value:
static int name16(MpegEncContext *s, uint8_t *dst, uint8_t *src, \
ptrdiff_t 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; \
}
const char * s
Definition: avisynth_c.h:768
#define src
Definition: vp8dsp.c:254
uint8_t
return
MpegEncContext.
Definition: mpegvideo.h:78
int
GLint GLenum GLboolean GLsizei stride
Definition: opengl_enc.c:105
if(ret< 0)
Definition: vf_mcdeint.c:282
#define stride

Definition at line 952 of file me_cmp.c.

#define SET_CMP_FUNC (   name)
Value:
c->name[0] = name ## 16_c; \
c->name[1] = name ## 8x8_c;
static double c[64]
const char * name
Definition: opengl_enc.c:103

Referenced by ff_me_cmp_init().

Function Documentation

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

Definition at line 34 of file me_cmp.c.

Referenced by ff_me_cmp_init().

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

Definition at line 51 of file me_cmp.c.

Referenced by ff_me_cmp_init().

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

Definition at line 72 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int sum_abs_dctelem_c ( int16_t *  block)
static

Definition at line 102 of file me_cmp.c.

Referenced by ff_me_cmp_init().

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

Definition at line 114 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int pix_median_abs16_c ( MpegEncContext v,
uint8_t pix1,
uint8_t pix2,
ptrdiff_t  stride,
int  h 
)
inlinestatic

Definition at line 142 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,
ptrdiff_t  stride,
int  h 
)
static

Definition at line 181 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,
ptrdiff_t  stride,
int  h 
)
static

Definition at line 209 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,
ptrdiff_t  stride,
int  h 
)
static

Definition at line 239 of file me_cmp.c.

Referenced by ff_me_cmp_init().

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

Definition at line 269 of file me_cmp.c.

Referenced by ff_me_cmp_init().

static int pix_median_abs8_c ( MpegEncContext v,
uint8_t pix1,
uint8_t pix2,
ptrdiff_t  stride,
int  h 
)
inlinestatic

Definition at line 289 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,
ptrdiff_t  stride,
int  h 
)
static

Definition at line 320 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,
ptrdiff_t  stride,
int  h 
)
static

Definition at line 340 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,
ptrdiff_t  stride,
int  h 
)
static

Definition at line 362 of file me_cmp.c.

Referenced by ff_me_cmp_init().

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

Definition at line 384 of file me_cmp.c.

Referenced by ff_me_cmp_init().

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

Definition at line 409 of file me_cmp.c.

Referenced by ff_me_cmp_init().

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

Definition at line 434 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 440 of file me_cmp.c.

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

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

Definition at line 520 of file me_cmp.c.

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

Definition at line 572 of file me_cmp.c.

Referenced by ff_me_cmp_init().

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

Definition at line 624 of file me_cmp.c.

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

Definition at line 690 of file me_cmp.c.

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

Definition at line 707 of file me_cmp.c.

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

Definition at line 732 of file me_cmp.c.

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

Definition at line 809 of file me_cmp.c.

av_cold void ff_me_cmp_init_static ( void  )

Definition at line 980 of file me_cmp.c.

Referenced by avcodec_init().

int ff_check_alignment ( void  )

Definition at line 988 of file me_cmp.c.

Referenced by encode_thread(), estimate_motion_thread(), ff_me_cmp_init(), and mb_var_thread().

av_cold void ff_me_cmp_init ( MECmpContext c,
AVCodecContext avctx 
)

Variable Documentation

uint32_t ff_square_tab[512] = { 0, }

Definition at line 32 of file me_cmp.c.

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