00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _ME_UMHEXSMP_H_
00027 #define _ME_UMHEXSMP_H_
00028
00029 #include "mbuffer.h"
00030
00031 struct umhex_smp_struct {
00032 uint16 SymmetricalCrossSearchThreshold1;
00033 uint16 SymmetricalCrossSearchThreshold2;
00034 uint16 ConvergeThreshold;
00035 uint16 SubPelThreshold1;
00036 uint16 SubPelThreshold3;
00037
00038 byte **SearchState;
00039 int ***l0_cost;
00040 int ***l1_cost;
00041 byte *flag_intra;
00042 int flag_intra_SAD;
00043
00044 int pred_SAD_uplayer;
00045 short pred_MV_uplayer_X;
00046 short pred_MV_uplayer_Y;
00047 };
00048
00049 typedef struct umhex_smp_struct UMHexSMPStruct;
00050
00051 extern void smpUMHEX_init (ImageParameters *p_Img);
00052 extern int smpUMHEX_get_mem (ImageParameters *p_Img);
00053 extern void smpUMHEX_free_mem (ImageParameters *p_Img);
00054 extern void smpUMHEX_decide_intrabk_SAD(Macroblock *currMB);
00055 extern void smpUMHEX_skip_intrabk_SAD (Macroblock *currMB);
00056 extern void smpUMHEX_setup (Macroblock *currMB, short, int, int, int, int, short ******);
00057
00058 extern int smpUMHEXBipredIntegerPelBlockMotionSearch (Macroblock *, int, MotionVector *, MotionVector *, MotionVector *, MotionVector *, MEBlock *, int, int, int);
00059 extern int smpUMHEXIntegerPelBlockMotionSearch (Macroblock *currMB, MotionVector *pred_mv, MEBlock *mv_block, int min_mcost, int lambda_factor);
00060 extern int smpUMHEXSubPelBlockMotionSearch (Macroblock *currMB, MotionVector *pred_mv, MEBlock *mv_block, int min_mcost, int lambda_factor);
00061 extern int smpUMHEXFullSubPelBlockMotionSearch (Macroblock *currMB, MotionVector *pred_mv, MEBlock *mv_block, int min_mcost, int lambda_factor);
00062 extern int smpUMHEXSubPelBlockME (Macroblock *currMB, MotionVector *pred_mv, MEBlock *mv_block, int min_mcost, int *lambda);
00063
00064 #endif