rc_quadratic.c File Reference

Rate Control algorithm. More...

#include <math.h>
#include <limits.h>
#include "global.h"
#include "ratectl.h"

Include dependency graph for rc_quadratic.c:

Go to the source code of this file.

Functions

void rc_alloc_quadratic (rc_quadratic **prc)
void rc_copy_quadratic (rc_quadratic *dst, rc_quadratic *src)
void rc_free_quadratic (rc_quadratic **prc)
void rc_init_seq (rc_quadratic *prc)
void rc_init_GOP (rc_quadratic *prc, int np, int nb)
void rc_init_pict (rc_quadratic *prc, int fieldpic, int topfield, int targetcomputation, float mult)
void rc_update_pict (rc_quadratic *prc, int nbits)
void rc_update_picture (int bits)
int updateComplexity (rc_quadratic *prc, Boolean is_updated, int nbits)
void updatePparams (rc_quadratic *prc, int complexity)
void updateBparams (rc_quadratic *prc, int complexity)
void rc_update_pict_frame (rc_quadratic *prc, int nbits)
void updateRCModel (rc_quadratic *prc)
void RCModelEstimator (rc_quadratic *prc, int n_windowSize, Boolean *m_rgRejected)
void updateMADModel (rc_quadratic *prc)
void MADModelEstimator (rc_quadratic *prc, int n_windowSize, Boolean *PictureRejected)
int updateQPRC0 (rc_quadratic *prc, int topfield)
int updateQPRC1 (rc_quadratic *prc, int topfield)
int updateQPRC2 (rc_quadratic *prc, int topfield)
int updateQPRC3 (rc_quadratic *prc, int topfield)
void updateQPInterlace (rc_quadratic *prc)
void updateQPNonPicAFF (rc_quadratic *prc)
void updateBottomField (rc_quadratic *prc)
int updateFirstP (rc_quadratic *prc, int topfield)
int updateNegativeTarget (rc_quadratic *prc, int topfield, int m_Qp)
int updateFirstBU (rc_quadratic *prc, int topfield)
void updateLastBU (rc_quadratic *prc, int topfield)
void predictCurrPicMAD (rc_quadratic *prc)
void updateModelQPBU (rc_quadratic *prc, int topfield, int m_Qp)
void updateQPInterlaceBU (rc_quadratic *prc)
void updateModelQPFrame (rc_quadratic *prc, int m_Bits)
int rc_handle_mb (int prev_mb, Macroblock *currMB, Slice *currSlice)
void rc_init_top_field (void)
void rc_init_bottom_field (int TopFieldBits)
void rc_init_frame_rdpic (float rateRatio)
void rc_allocate_memory (void)
void rc_free_memory (void)
void rc_update_mb_stats (Macroblock *currMB, int *bitCount)
void rc_save_state (void)
void rc_restore_state (void)

Variables

static const float THETA = 1.3636F
static const float OMEGA = 0.9F
static const float MINVALUE = 4.0F


Detailed Description

Rate Control algorithm.

Author:
Main contributors (see contributors.h for copyright, address and affiliation details)
Date:
16 Jan. 2003

Definition in file rc_quadratic.c.


Function Documentation

void MADModelEstimator ( rc_quadratic *  prc,
int  n_windowSize,
Boolean *  PictureRejected 
)

MAD mode estimator.

Definition at line 1196 of file rc_quadratic.c.

References ImageParameters::number, InputParameters::RCUpdateMode, and ImageParameters::type.

Referenced by updateMADModel().

void predictCurrPicMAD ( rc_quadratic *  prc  ) 

update current picture MAD

Definition at line 2354 of file rc_quadratic.c.

References InputParameters::MbInterlace, and InputParameters::PicInterlace.

Referenced by updateQPRC0(), updateQPRC1(), updateQPRC2(), and updateQPRC3().

void rc_alloc_quadratic ( rc_quadratic **  prc  ) 

Dynamically allocate memory needed for rate control.

Definition at line 37 of file rc_quadratic.c.

References InputParameters::basicunit, ImageParameters::FrameSizeInMbs, no_mem_exit(), and InputParameters::qp.

Referenced by rc_allocate_memory().

Here is the call graph for this function:

void rc_allocate_memory ( void   ) 

allocate rate control memory

Definition at line 2594 of file rc_quadratic.c.

References InputParameters::MbInterlace, rc_alloc_generic(), rc_alloc_quadratic(), InputParameters::RCUpdateMode, and InputParameters::RDPictureDecision.

Referenced by init_global_buffers().

Here is the call graph for this function:

void rc_copy_quadratic ( rc_quadratic *  dst,
rc_quadratic *  src 
)

void rc_free_memory ( void   ) 

free rate control memory

Definition at line 2620 of file rc_quadratic.c.

References InputParameters::MbInterlace, rc_free_generic(), rc_free_quadratic(), InputParameters::RCUpdateMode, and InputParameters::RDPictureDecision.

Referenced by free_global_buffers().

Here is the call graph for this function:

void rc_free_quadratic ( rc_quadratic **  prc  ) 

Free memory needed for rate control.

Definition at line 132 of file rc_quadratic.c.

Referenced by rc_free_memory().

int rc_handle_mb ( int  prev_mb,
Macroblock *  currMB,
Slice *  currSlice 
)

void rc_init_bottom_field ( int  TopFieldBits  ) 

initialize rate control model for the bottom field

Definition at line 2558 of file rc_quadratic.c.

References ImageParameters::qp.

Referenced by field_picture().

void rc_init_frame_rdpic ( float  rateRatio  ) 

initialize rate control for RDPictureDecision

Definition at line 2572 of file rc_quadratic.c.

References ImageParameters::qp, rc_copy_generic(), rc_copy_quadratic(), and InputParameters::RCUpdateMode.

Referenced by rdPictureCoding().

Here is the call graph for this function:

void rc_init_GOP ( rc_quadratic *  prc,
int  np,
int  nb 
)

void rc_init_pict ( rc_quadratic *  prc,
int  fieldpic,
int  topfield,
int  targetcomputation,
float  mult 
)

void rc_init_seq ( rc_quadratic *  prc  ) 

void rc_init_top_field ( void   ) 

initialize rate control model for the top field

Definition at line 2544 of file rc_quadratic.c.

References InputParameters::basicunit, ImageParameters::BasicUnit, InputParameters::PicInterlace, and ImageParameters::qp.

Referenced by field_picture().

void rc_restore_state ( void   ) 

restore state of rate control model

Definition at line 2696 of file rc_quadratic.c.

References rc_copy_generic(), rc_copy_quadratic(), and InputParameters::RCUpdateMode.

Referenced by rdPictureCoding().

Here is the call graph for this function:

void rc_save_state ( void   ) 

save state of rate control model

Definition at line 2677 of file rc_quadratic.c.

References rc_copy_generic(), rc_copy_quadratic(), and InputParameters::RCUpdateMode.

Referenced by rdPictureCoding().

Here is the call graph for this function:

void rc_update_mb_stats ( Macroblock *  currMB,
int *  bitCount 
)

void rc_update_pict ( rc_quadratic *  prc,
int  nbits 
)

update one picture after frame/field encoding

Parameters:
nbits number of bits used for picture

Definition at line 745 of file rc_quadratic.c.

References ComputeFrameMAD(), ImageParameters::frm_number, InputParameters::RCUpdateMode, ImageParameters::type, and updateRCModel().

Referenced by rc_update_picture().

Here is the call graph for this function:

void rc_update_pict_frame ( rc_quadratic *  prc,
int  nbits 
)

update after frame encoding

Parameters:
nbits number of bits used for frame

Definition at line 835 of file rc_quadratic.c.

References ImageParameters::b_frame_to_code, InputParameters::HierarchicalCoding, GOP_DATA::hierarchy_layer, ImageParameters::number, InputParameters::RCUpdateMode, and ImageParameters::type.

Referenced by rc_init_seq().

void rc_update_picture ( int  bits  ) 

update one picture after coding

Parameters:
bits number of bits used for picture

Definition at line 777 of file rc_quadratic.c.

References rc_update_pict().

Referenced by rc_init_seq().

Here is the call graph for this function:

void RCModelEstimator ( rc_quadratic *  prc,
int  n_windowSize,
Boolean *  m_rgRejected 
)

Model Estimator.

Definition at line 1033 of file rc_quadratic.c.

References ImageParameters::number, InputParameters::RCUpdateMode, and ImageParameters::type.

Referenced by updateRCModel().

void updateBottomField ( rc_quadratic *  prc  ) 

Update QP values for bottom filed in field coding.

Definition at line 2114 of file rc_quadratic.c.

References InputParameters::PicInterlace.

Referenced by updateQPRC0(), updateQPRC1(), updateQPRC2(), and updateQPRC3().

int updateFirstBU ( rc_quadratic *  prc,
int  topfield 
)

update QP for the first Basic Unit in the picture

Definition at line 2262 of file rc_quadratic.c.

References InputParameters::MbInterlace, InputParameters::PicInterlace, and ImageParameters::RCMaxQP.

Referenced by updateQPRC0(), updateQPRC1(), updateQPRC2(), and updateQPRC3().

int updateFirstP ( rc_quadratic *  prc,
int  topfield 
)

update QP variables for P frames

Definition at line 2135 of file rc_quadratic.c.

References InputParameters::MbInterlace, and InputParameters::PicInterlace.

Referenced by updateQPRC0(), updateQPRC1(), updateQPRC2(), and updateQPRC3().

void updateLastBU ( rc_quadratic *  prc,
int  topfield 
)

update QP for the last Basic Unit in the picture

Definition at line 2311 of file rc_quadratic.c.

References InputParameters::intra_period, InputParameters::MbInterlace, and InputParameters::PicInterlace.

Referenced by updateQPRC0(), updateQPRC1(), updateQPRC2(), and updateQPRC3().

void updateMADModel ( rc_quadratic *  prc  ) 

update the parameters of linear prediction model

Definition at line 1106 of file rc_quadratic.c.

References ImageParameters::BasicUnit, error(), ImageParameters::FrameSizeInMbs, MADModelEstimator(), InputParameters::MbInterlace, ImageParameters::number, InputParameters::PicInterlace, InputParameters::RCUpdateMode, and ImageParameters::type.

Referenced by updateRCModel().

Here is the call graph for this function:

void updateModelQPBU ( rc_quadratic *  prc,
int  topfield,
int  m_Qp 
)

update QP using the quadratic model for basic unit coding

Definition at line 2385 of file rc_quadratic.c.

References InputParameters::basicunit, Qstep2QP(), ImageParameters::RCMaxQP, and ImageParameters::RCMinQP.

Referenced by updateQPRC0(), updateQPRC1(), updateQPRC2(), and updateQPRC3().

Here is the call graph for this function:

void updateModelQPFrame ( rc_quadratic *  prc,
int  m_Bits 
)

update QP with quadratic model

Definition at line 2448 of file rc_quadratic.c.

References Qstep2QP().

Referenced by updateQPRC0(), updateQPRC1(), updateQPRC2(), and updateQPRC3().

Here is the call graph for this function:

int updateNegativeTarget ( rc_quadratic *  prc,
int  topfield,
int  m_Qp 
)

void updateQPInterlace ( rc_quadratic *  prc  ) 

Save previous QP values for interlaced coding.

Definition at line 2068 of file rc_quadratic.c.

Referenced by updateQPRC0(), updateQPRC2(), and updateQPRC3().

void updateQPInterlaceBU ( rc_quadratic *  prc  ) 

update QP variables for interlaced pictures and basic unit coding

Definition at line 2426 of file rc_quadratic.c.

Referenced by updateQPRC0(), updateQPRC1(), updateQPRC2(), and updateQPRC3().

void updateQPNonPicAFF ( rc_quadratic *  prc  ) 

Save previous QP values for the case of non-PicAFF.

Definition at line 2094 of file rc_quadratic.c.

Referenced by updateQPRC0(), updateQPRC1(), updateQPRC2(), and updateQPRC3().

int updateQPRC0 ( rc_quadratic *  prc,
int  topfield 
)

int updateQPRC1 ( rc_quadratic *  prc,
int  topfield 
)

int updateQPRC2 ( rc_quadratic *  prc,
int  topfield 
)

int updateQPRC3 ( rc_quadratic *  prc,
int  topfield 
)

void updateRCModel ( rc_quadratic *  prc  ) 


Documentation generated with DoxyGen