1 2 /*! 3 *************************************************************************** 4 * \file 5 * rc_quadratic.h 6 * 7 * \author 8 * Zhengguo LI 9 * Athanasios Leontaris 10 * 11 * \date 12 * 14 Jan 2003 13 * 14 * \brief 15 * Headerfile for rate control 16 ************************************************************************** 17 */ 18 19 #ifndef _RC_QUADRATIC_H_ 20 #define _RC_QUADRATIC_H_ 21 22 #include "rc_types.h" 23 24 // rate control functions 25 // init/copy 26 extern void rc_alloc_quadratic( VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic **p_quad ); 27 extern void rc_free_quadratic ( RCQuadratic **p_quad ); 28 extern void rc_copy_quadratic ( VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *dst, RCQuadratic *src ); 29 30 // rate control (externally visible) 31 extern void rc_init_seq (VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, RCGeneric *p_gen); 32 extern void rc_init_GOP (VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, RCGeneric *p_gen, int np, int nb); 33 extern void rc_update_pict_frame (VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, RCGeneric *p_gen, int nbits); 34 extern void rc_init_pict (VideoParameters *p_Vid, InputParameters *p_Inp, 35 RCQuadratic *p_quad, RCGeneric *p_gen, int fieldpic, int topfield, int targetcomputation, float mult); 36 extern void rc_update_pict (VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, RCGeneric *p_gen, int nbits); 37 extern void rc_update_picture (VideoParameters *p_Vid, InputParameters *p_Inp, int bits); 38 39 extern int updateQPRC0(VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, RCGeneric *p_gen, int topfield); 40 extern int updateQPRC1(VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, RCGeneric *p_gen, int topfield); 41 extern int updateQPRC2(VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, RCGeneric *p_gen, int topfield); 42 extern int updateQPRC3(VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, RCGeneric *p_gen, int topfield); 43 44 // internal functions 45 extern void updateQPInterlace ( RCQuadratic *p_quad, RCGeneric *p_gen ); 46 extern void updateQPNonPicAFF ( seq_parameter_set_rbsp_t *active_sps, RCQuadratic *p_quad ); 47 extern void updateBottomField ( InputParameters *p_Inp, RCQuadratic *p_quad ); 48 extern int updateFirstP ( VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, RCGeneric *p_gen, int topfield ); 49 extern int updateNegativeTarget( VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, RCGeneric *p_gen, int topfield, int m_Qp ); 50 extern int updateFirstBU ( VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, RCGeneric *p_gen, int topfield ); 51 extern void updateLastBU ( VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, RCGeneric *p_gen, int topfield ); 52 extern void predictCurrPicMAD ( InputParameters *p_Inp, RCQuadratic *p_quad, RCGeneric *p_gen ); 53 extern void updateModelQPBU ( VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, int m_Qp ); 54 extern void updateQPInterlaceBU ( RCQuadratic *p_quad, RCGeneric *p_gen ); 55 extern void updateModelQPFrame ( RCQuadratic *p_quad, int m_Bits ); 56 57 extern void updateRCModel (VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, RCGeneric *p_gen); 58 extern void updateMADModel (VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, RCGeneric *p_gen); 59 extern void RCModelEstimator (VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, int n_windowSize, Boolean *m_rgRejected); 60 extern void MADModelEstimator(VideoParameters *p_Vid, InputParameters *p_Inp, RCQuadratic *p_quad, int n_windowSize, Boolean *PictureRejected); 61 extern int updateComplexity (VideoParameters *p_Vid, RCQuadratic *p_quad, RCGeneric *p_gen, Boolean is_updated, int nbits ); 62 extern void updatePparams (RCQuadratic *p_quad, RCGeneric *p_gen, int complexity ); 63 extern void updateBparams (RCQuadratic *p_quad, RCGeneric *p_gen, int complexity ); 64 65 // external generic functions 66 extern int rc_handle_mb ( Macroblock *currMB, int prev_mb); 67 extern void rc_init_top_field ( VideoParameters *p_Vid, InputParameters *p_Inp ); 68 extern void rc_init_bottom_field ( VideoParameters *p_Vid, InputParameters *p_Inp, int TopFieldBits ); 69 extern void rc_init_frame_rdpic ( VideoParameters *p_Vid, InputParameters *p_Inp, float rateRatio ); 70 extern void rc_allocate_memory ( VideoParameters *p_Vid, InputParameters *p_Inp ); 71 extern void rc_free_memory ( VideoParameters *p_Vid, InputParameters *p_Inp ); 72 extern void rc_update_mb_stats ( Macroblock *currMB); 73 extern void rc_save_state ( VideoParameters *p_Vid, InputParameters *p_Inp ); 74 extern void rc_restore_state ( VideoParameters *p_Vid, InputParameters *p_Inp ); 75 76 #endif 77