Go to the documentation of this file.
19 #ifndef AVCODEC_ME_CMP_H
20 #define AVCODEC_ME_CMP_H
int(* sum_abs_dctelem)(int16_t *block)
me_cmp_func hadamard8_diff[6]
void ff_me_cmp_init_x86(MECmpContext *c, AVCodecContext *avctx)
void ff_me_cmp_init_ppc(MECmpContext *c, AVCodecContext *avctx)
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf type
static av_always_inline int cmp(MpegEncContext *s, const int x, const int y, const int subx, const int suby, const int size, const int h, int ref_index, int src_index, me_cmp_func cmp_func, me_cmp_func chroma_cmp_func, const int flags)
compares a block (either a full macroblock or a partition thereof) against a proposed motion-compensa...
void ff_me_cmp_init_alpha(MECmpContext *c, AVCodecContext *avctx)
me_cmp_func median_sad[6]
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
void ff_me_cmp_init_mips(MECmpContext *c, AVCodecContext *avctx)
me_cmp_func frame_skip_cmp[6]
int ff_check_alignment(void)
void ff_me_cmp_init_arm(MECmpContext *c, AVCodecContext *avctx)
me_cmp_func pix_abs[2][4]
void ff_me_cmp_init(MECmpContext *c, AVCodecContext *avctx)
me_cmp_func me_sub_cmp[6]
me_cmp_func me_pre_cmp[6]
me_cmp_func dct264_sad[6]
main external API structure.
me_cmp_func quant_psnr[6]
void ff_dsputil_init_dwt(MECmpContext *c)
int(* me_cmp_func)(struct MpegEncContext *c, uint8_t *blk1, uint8_t *blk2, ptrdiff_t stride, int h)
const uint32_t ff_square_tab[512]
The exact code depends on how similar the blocks are and how related they are to the block
void ff_set_cmp(MECmpContext *c, me_cmp_func *cmp, int type)