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

Audio

开发平台:

Visual C++

  1. /*!
  2.  ***************************************************************************
  3.  * file
  4.  *    ratectl.h
  5.  *
  6.  * author
  7.  *    Zhengguo LI
  8.  *
  9.  * date
  10.  *    14 Jan 2003
  11.  *
  12.  * brief
  13.  *    Headerfile for rate control
  14.  **************************************************************************
  15.  */
  16. #ifndef _RATE_CTL_H_
  17. #define _RATE_CTL_H_
  18. #include "rc_quadratic.h"
  19. /* generic rate control variables */
  20. typedef struct {
  21.   // RC flags
  22.   int   TopFieldFlag;
  23.   int   FieldControl;
  24.   int   FieldFrame;
  25.   int   NoGranularFieldRC;
  26.   // bits stats
  27.   int   NumberofHeaderBits;
  28.   int   NumberofTextureBits;
  29.   int   NumberofBasicUnitHeaderBits;
  30.   int   NumberofBasicUnitTextureBits;
  31.   // frame stats
  32.   int   NumberofGOP;
  33.   int   NumberofCodedBFrame;  
  34.   // MAD stats
  35.   int64 TotalMADBasicUnit;
  36.   int   *MADofMB;
  37.   // buffer and budget
  38.   int64 CurrentBufferFullness; //LIZG 25/10/2002
  39.   int64 RemainingBits;
  40.   // bit allocations for RC_MODE_3
  41.   int   RCPSliceBits;
  42.   int   RCISliceBits;
  43.   int   RCBSliceBits[RC_MAX_TEMPORAL_LEVELS];
  44.   int   temporal_levels;
  45.   int   hierNb[RC_MAX_TEMPORAL_LEVELS];
  46.   int   NPSlice;
  47.   int   NISlice;
  48. } rc_generic;
  49. // macroblock activity
  50. int    diffy[16][16];
  51. // generic functions
  52. int    Qstep2QP          ( double Qstep );
  53. double QP2Qstep          ( int QP );
  54. int    ComputeMBMAD      ( void );
  55. double ComputeFrameMAD   ( void );
  56. void   rc_store_mad      (Macroblock *currMB);
  57. void   update_qp_cbp     (Macroblock *currMB, short best_mode);
  58. void   update_qp_cbp_tmp (Macroblock *currMB, int cbp, int best_mode);
  59. // rate control functions
  60. // init/copy
  61. void  rc_alloc_generic           ( rc_generic **prc );
  62. void  rc_free_generic            ( rc_generic **prc );
  63. void  rc_copy_generic            ( rc_generic *dst, rc_generic *src );
  64. void  rc_init_gop_params         (void);
  65. void  rc_init_frame              (int FrameNumberInFile);
  66. void  rc_init_sequence           (void);
  67. void  rc_store_slice_header_bits (int len);
  68. // rate control CURRENT pointers
  69. rc_generic   *generic_RC;
  70. // rate control object pointers for RDPictureDecision buffering...
  71. rc_generic   *generic_RC_init, *generic_RC_best;
  72. #endif