00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _ME_EPZS_H_
00020 #define _ME_EPZS_H_
00021
00022
00023 #define CHECK_RANGE ((cand.mv_x >= 0) && (cand.mv_x < img_width - blocksize_x) &&(cand.mv_y >= 0) && (cand.mv_y < img_height - blocksize_y))
00024
00025 typedef struct
00026 {
00027 int mb_adaptive_frame_field_flag;
00028 int size_x, size_y;
00029
00030
00031 MotionVector ***frame;
00032
00033 MotionVector ***top;
00034
00035 MotionVector ***bot;
00036 } EPZSColocParams;
00037
00038 typedef struct
00039 {
00040 MotionVector motion;
00041 int start_nmbr;
00042 int next_points;
00043 }
00044 SPoint;
00045
00046 typedef struct MEPatternNode
00047 {
00048 int searchPoints;
00049 SPoint *point;
00050 int stopSearch;
00051 int nextLast;
00052 struct MEPatternNode *nextpattern;
00053 }
00054 EPZSStructure;
00055
00056 typedef enum
00057 {
00058 SDIAMOND = 0,
00059 SQUARE = 1,
00060 EDIAMOND = 2,
00061 LDIAMOND = 3,
00062 SBDIAMOND = 4
00063 } EPZSPatterns;
00064
00065 extern EPZSColocParams *EPZSCo_located;
00066 extern int ***EPZSDistortion;
00067
00068 extern int EPZSInit (InputParameters *params, ImageParameters *img);
00069 extern void EPZSDelete (InputParameters *params);
00070 extern void EPZSOutputStats (InputParameters *params, FILE * stat, short stats_file);
00071 extern void EPZSSliceInit (InputParameters *params, ImageParameters *img, EPZSColocParams* p, StorablePicture **listX[6]);
00072 extern int EPZSPelBlockMotionSearch (Macroblock *, imgpel *, short, int, char ***, short ****,
00073 int, int, int, MotionVector *, MotionVector *, int, int, int, int);
00074
00075 extern int EPZSBiPredBlockMotionSearch (Macroblock *, imgpel *, short, int, char ***, short ****,
00076 int, int, int,
00077 MotionVector *, MotionVector *, MotionVector *, MotionVector *,
00078 int, int, int, int, int);
00079
00080 extern int EPZSSubPelBlockMotionSearch (imgpel *, short, int, int, int, int, int,
00081 MotionVector *, MotionVector *, int, int, int, int*, int);
00082
00083 extern int EPZSSubPelBlockSearchBiPred (imgpel* orig_pic, short ref, int list, int pic_pix_x, int pic_pix_y,
00084 int blocktype, MotionVector *pred_mv1, MotionVector *pred_mv2, MotionVector *mv1, MotionVector *mv2,
00085 int search_pos2, int search_pos4, int min_mcost, int *lambda_factor, int apply_weights);
00086
00087 #endif
00088