me_epzs.h
上传用户:hjq518
上传日期:2021-12-09
资源大小:5084k
文件大小:3k
源码类别:

Audio

开发平台:

Visual C++

  1. /*!
  2.  ************************************************************************
  3.  * file
  4.  *     me_epzs.h
  5.  *
  6.  * author
  7.  *    Alexis Michael Tourapis        <alexis.tourapis@dolby.com>
  8.  *
  9.  * date
  10.  *    11. August 2006
  11.  *
  12.  * brief
  13.  *    Headerfile for EPZS motion estimation
  14.  **************************************************************************
  15.  */
  16. #ifndef _ME_EPZS_H_
  17. #define _ME_EPZS_H_
  18. #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))
  19. typedef struct
  20. {
  21.   int         mb_adaptive_frame_field_flag;
  22.   int         size_x, size_y;
  23.   
  24.   // Frame
  25.   MotionVector ***frame;  //!< motion vector       [list][subblock_x][subblock_y]
  26.   // Top field
  27.   MotionVector ***top;    //!< motion vector       [list][subblock_x][subblock_y]
  28.   // Bottom field
  29.   MotionVector ***bot;    //!< motion vector       [list][subblock_x][subblock_y]
  30. } EPZSColocParams;
  31. typedef struct
  32. {
  33.   MotionVector motion;
  34.   int start_nmbr;
  35.   int next_points;
  36. }
  37. SPoint;
  38. typedef struct MEPatternNode
  39. {
  40.   int    searchPoints;
  41.   SPoint *point;
  42.   int    stopSearch;
  43.   int    nextLast;
  44.   struct MEPatternNode *nextpattern;
  45. }
  46. EPZSStructure;
  47. typedef enum
  48. {
  49.   SDIAMOND  = 0,
  50.   SQUARE    = 1,
  51.   EDIAMOND  = 2,
  52.   LDIAMOND  = 3,
  53.   SBDIAMOND = 4
  54. } EPZSPatterns;
  55. extern EPZSColocParams *EPZSCo_located;
  56. extern int ***EPZSDistortion;  //!< Array for storing SAD Values
  57. extern int  EPZSInit        (InputParameters *params, ImageParameters *img);
  58. extern void EPZSDelete      (InputParameters *params);
  59. extern void EPZSOutputStats (InputParameters *params, FILE * stat, short stats_file);
  60. extern void EPZSSliceInit   (InputParameters *params, ImageParameters *img, EPZSColocParams* p, StorablePicture **listX[6]);
  61. extern int  EPZSPelBlockMotionSearch (Macroblock *, imgpel *, short, int, int, char ***, short ****,
  62.                                      int, int, int, short[2], short[2], int, int, int, int);
  63. extern int  EPZSBiPredBlockMotionSearch (Macroblock *, imgpel *, short, int, int, char  ***, short  ****,
  64.                                         int, int, int, short[2], short[2],
  65.                                         short[2], short[2], int, int, int, int, int);
  66. extern int EPZSSubPelBlockMotionSearch (imgpel *, short, int, int, int, int, int, short[2],
  67.                                         short[2], int, int, int, int*, int);
  68. extern int EPZSSubPelBlockSearchBiPred  (imgpel* orig_pic, short ref, int list, int pic_pix_x, int pic_pix_y,
  69.                                          int blocktype, short pred_mv1[2], short pred_mv2[2], short mv1[2], short mv2[2],
  70.                                          int search_pos2, int search_pos4, int min_mcost, int *lambda_factor, int apply_weights);
  71. #endif