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

Audio

开发平台:

Visual C++

  1. /*!
  2.  ***************************************************************************
  3.  * file
  4.  *    rdopt.h
  5.  *
  6.  * author
  7.  *    Alexis Michael Tourapis
  8.  *
  9.  * date
  10.  *    2 January 2008
  11.  *
  12.  * brief
  13.  *    Headerfile for RDO
  14.  **************************************************************************
  15.  */
  16. #ifndef _RDO_H_
  17. #define _RDO_H_
  18. extern int   ****cofAC, ****cofAC8x8;        // [8x8block][4x4block][level/run][scan_pos]
  19. extern int   ***cofDC;                       // [yuv][level/run][scan_pos]
  20. extern int   **cofAC4x4, ****cofAC4x4intern; // [level/run][scan_pos]
  21. extern int   cbp, cbp8x8, cnt_nonz_8x8;
  22. extern int   cbp_blk8x8;
  23. extern char  l0_refframe[4][4], l1_refframe[4][4];
  24. extern short b8mode[4], b8pdir[4];
  25. //CSptr cs_mb, cs_b8, cs_cm, cs_ib8, cs_ib4;
  26. extern int   best_c_imode;
  27. extern int   best_i16offset;
  28. extern short best_mode;
  29. //mixed transform sizes definitions
  30. extern int   luma_transform_size_8x8_flag;
  31. extern short all_mv8x8[2][2][4][4][2];       //[8x8_data/temp_data][LIST][block_x][block_y][MVx/MVy]
  32. extern short pred_mv8x8[2][2][4][4][2];
  33. extern int   ****cofAC8x8ts[3];        // [plane][8x8block][4x4block][level/run][scan_pos]
  34. extern int   ****cofAC8x8CbCr[2];
  35. extern int   **cofAC4x4CbCr[2];
  36. extern int   ****cofAC4x4CbCrintern[2];
  37. extern int64    cbp_blk8_8x8ts;
  38. extern int      cbp8_8x8ts;
  39. extern int      cost8_8x8ts;
  40. extern int      cnt_nonz8_8x8ts;
  41. // adaptive langrangian parameters
  42. extern double mb16x16_cost;
  43. extern double lambda_mf_factor;
  44. int (*Mode_Decision_for_4x4IntraBlocks) (Macroblock *currMB, int  b8,  int  b4,  double  lambda,  double*  min_cost, int cr_cbp[3], int is_cavlc);
  45. double RDCost_for_4x4IntraBlocks (Macroblock *currMB, int* nonzero, int b8, int b4, int ipmode, double lambda, int mostProbableMode, int c_nzCbCr[3], int is_cavlc);
  46. int valid_intra_mode(int ipmode);
  47. void compute_comp_cost(imgpel **cur_img, imgpel prd_img[16][16], int pic_opix_x, int *cost);
  48. void generate_pred_error(imgpel **cur_img, imgpel prd_img[16][16], imgpel cur_prd[16][16], 
  49.                          int m7[16][16], int pic_opix_x, int block_x);
  50. extern void SetMotionVectorPredictor (Macroblock *currMB, short  pmv[2], char   **refPic,
  51.                          short  ***tmp_mv, short  ref_frame,
  52.                          int    list,      int mb_x, int mb_y, 
  53.                          int    blockshape_x, int blockshape_y);
  54. extern void UpdateMotionVectorPredictor(Macroblock* currMB, int mb_type) ;
  55.                          
  56. //============= rate-distortion optimization ===================
  57. void  clear_rdopt (InputParameters *params);
  58. void  init_rdopt  (InputParameters *params);
  59. #endif