Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

rate.c File Reference

#include <sys/times.h>
#include "all.h"
#include "mtypes.h"
#include "bitio.h"
#include "frames.h"
#include "prototypes.h"
#include "param.h"
#include "mheaders.h"
#include "fsize.h"
#include "postdct.h"
#include "mpeg.h"
#include "parallel.h"
#include "dct.h"
#include "rate.h"

Go to the source code of this file.


Defines

#define MAX_BIT_RATE   104857600
#define MAX_BUFFER_SIZE   16760832
#define DEFAULT_BUFFER_SIZE   327680
#define DEFAULT_VBV_FULLNESS   3
#define DEFAULT_PICT_RATE_CODE   5
#define DEFAULT_PICT_RATE   30
#define MAX_VBV_DELAY   32768

Functions

int initGOPRateControl _ANSI_ARGS_ ((void))
void checkBufferFullness _ANSI_ARGS_ ((int count))
void checkSpatialActivity _ANSI_ARGS_ ((Block blk0, Block blk1, Block blk2, Block blk3))
void incNumBlocks _ANSI_ARGS_ ((int num))
void updateVBVBuffer _ANSI_ARGS_ ((int frameBits))
int BlockExperiments _ANSI_ARGS_ ((int16 *OrigBlock, int16 *NewBlock, int control))
int initRateControl ()
int initGOPRateControl ()
void targetRateControl (frame) MpegFrame *frame

Variables

int RateControlMode = VARIABLE_RATE
int32 buffer_size = DEFAULT_BUFFER_SIZE
int32 bit_rate = -1
int32 VBV_delay = 0
int32 VBV_buffer = 0
int32 bufferFillRate = 0
int32 frameDelayIncrement = 0
int Xi
int Xp
int Xb
int Si
int Sp
int Sb
float Qi
float Qp
float Qb
int Ti
int Tp
int Tb
int current_Tx
int GOP_X = 0
int GOP_I = 0
int GOP_P = 0
int GOP_B = 0
int Nx = 0
int Ni = 0
int Np = 0
int Nb = 0
int rc_numBlocks = 0
int rc_totalQuant = 0
int rc_bitsThisMB
int rc_totalMBBits
int rc_totalFrameBits
int rc_totalOverheadBits = 0
int RC_MB_SAMPLE_RATE = 0
float Ki = .7
float Kp = 1
float Kb = 1.4
int rc_R
int rc_G
int d0_i
int d0_p
int d0_b
int lastFrameVirtBuf
int currentVirtBuf
int MB_cnt = -1
int rc_Q
int reactionParameter
int act_j
float N_act
int avg_act
int total_act_j
int var_sblk
int P_mean
int mquant
int Qscale
char * Frame_header1 = " Fm # Bit GOP V "
char * Frame_header2 = " # type MBs Alloc left Ni Np Nb N_act buff Q_rc Qscale"
char * Frame_header3 = "---- - ---- ------ ------- -- -- -- ----- ------ ---- ----"
char * Frame_trailer1 = " avg virt % GOP % VBV"
char * Frame_trailer2 = " Sx Qx Xx act N_act buffer alloc left left buf delay"
char * Frame_trailer3 = "------ --.-- ------- --- --.-- ------- --- ------- --- ------- ------"
char * MB_header1 = "MB# #bits Q mqt Dj Q_j actj N_act totbits b/MB %alloc %done"
char * MB_header2 = "--- ----- -- --- ------ --- ----- --.-- ------ ---- --- ---"
char rc_buffer [101]
char * framePattern
int framePatternLen
Block blk0
Block blk1
Block blk2
Block blk3

Define Documentation

#define DEFAULT_BUFFER_SIZE   327680
 

Definition at line 73 of file rate.c.

#define DEFAULT_PICT_RATE   30
 

Definition at line 76 of file rate.c.

#define DEFAULT_PICT_RATE_CODE   5
 

Definition at line 75 of file rate.c.

#define DEFAULT_VBV_FULLNESS   3
 

Definition at line 74 of file rate.c.

#define MAX_BIT_RATE   104857600
 

Definition at line 71 of file rate.c.

#define MAX_BUFFER_SIZE   16760832
 

Definition at line 72 of file rate.c.

#define MAX_VBV_DELAY   32768
 

Definition at line 77 of file rate.c.


Function Documentation

int BlockExperiments _ANSI_ARGS_ (int16 *OrigBlock, int16 *NewBlock, int control)   
 

void updateVBVBuffer _ANSI_ARGS_ (int frameBits)   
 

void incNumBlocks _ANSI_ARGS_ (int num  
 

void checkSpatialActivity _ANSI_ARGS_ (Block blk0, Block blk1, Block blk2, Block blk3  
 

void checkBufferFullness _ANSI_ARGS_ (int count  
 

int initGOPRateControl _ANSI_ARGS_ (void)   
 

int initGOPRateControl  
 

Definition at line 312 of file rate.c.

References avg_act, bit_rate, buffer_size, d0_b, d0_i, d0_p, DBG_PRINT, GOP_B, GOP_I, GOP_P, GOP_X, mquant, Nb, Ni, Np, Nx, rc_G, rc_Q, rc_R, Xb, Xi, and Xp.

Referenced by initRateControl().

00313 {
00314   DBG_PRINT(("\tInitializing new GOP\n"));
00315   
00316   Nx = GOP_X;
00317   Ni = GOP_I;
00318   Np = GOP_P;
00319   Nb = GOP_B;
00320   
00321   rc_R += rc_G;
00322   
00323   DBG_PRINT(("\tbufsize: %d, bitrate: %d, pictrate: %d, GOP bits: %d\n",
00324              buffer_size, bit_rate, frameRateRounded, rc_R));
00325   DBG_PRINT(("\tXi: %d, Xp: %d, Xb: %d Nx: %d, Ni: %d, Np: %d, Nb: %d\n",
00326              Xi, Xp, Xb, Nx,Ni,Np,Nb));
00327   DBG_PRINT(("\td0_i: %d, d0_p: %d, d0_b: %d, avg_act: %d, rc_Q: %d, mquant: %d\n",
00328              d0_i, d0_p, d0_b, avg_act, rc_Q, mquant));
00329   return 1;
00330 }

int initRateControl  
 

Definition at line 218 of file rate.c.

References avg_act, bit_rate, buffer_size, bufferFillRate, d0_b, d0_i, d0_p, DBG_PRINT, frameDelayIncrement, framePattern, framePatternLen, GOP_B, GOP_I, GOP_P, GOP_X, initGOPRateControl(), Kb, Kp, lastFrameVirtBuf, mquant, N_act, RateControlMode, rc_bitsThisMB, rc_G, rc_numBlocks, rc_Q, rc_R, rc_totalFrameBits, rc_totalMBBits, rc_totalOverheadBits, rc_totalQuant, reactionParameter, VARIABLE_RATE, VBV_buffer, VBV_delay, Xb, Xi, and Xp.

00219 {
00220   int index;
00221   int result;
00222   
00223   DBG_PRINT(("\tInitializing Allocation Data\n"));
00224   
00225 #ifdef RC_STATS_FILE
00226   RC_FILE = fopen("RC_STATS_FILE", "w");
00227   if ( RC_FILE  == NULL) {
00228     DBG_PRINT(("\tOpen of RC file failed, using stderr\n"));
00229     RC_FILE = stderr;
00230     fprintf(RC_FILE, "\tOpen of RC file failed, using stderr\n");
00231     fflush(RC_FILE);
00232   }
00233 #endif
00234   
00235   /*  Initialize Pattern info */
00236   GOP_X = framePatternLen;
00237   for ( index = 0; index < framePatternLen; index++ ) {
00238     switch( framePattern[index] ) {
00239     case 'i':
00240       GOP_I++;
00241       break;
00242     case 'p':
00243       GOP_P++;
00244       break;
00245     case 'b':
00246       GOP_B++;
00247       break;
00248     default:
00249       printf("\n\tERROR rate.c - BAD PATTERN!\n");
00250       RateControlMode = VARIABLE_RATE;
00251       return (0);
00252     }
00253   }
00254   if (GOP_X != (GOP_I + GOP_P + GOP_B )) {
00255     printf("\n\tERROR rate.c - Pattern Length Mismatch\n");
00256     RateControlMode = VARIABLE_RATE;
00257     return (-1);
00258   }
00259   
00260   /* Initializing GOP bit allocation */ 
00261   rc_R = 0;
00262   rc_G = (bit_rate * GOP_X/frameRateRounded);
00263   
00264   /*   Initialize the "global complexity measures" */
00265   Xi = (160 * bit_rate/115);
00266   Xp = (60 * bit_rate/115);
00267   Xb = (42 * bit_rate/115);
00268   
00269   /*   Initialize MB counters */
00270   rc_totalMBBits= rc_bitsThisMB= rc_totalFrameBits=rc_totalOverheadBits = 0;
00271   rc_numBlocks = rc_totalQuant = 0;
00272   
00273   /*   init virtual buffers  */
00274   reactionParameter = (2 * bit_rate / frameRateRounded);
00275   d0_i = (10 * reactionParameter / 31);
00276   d0_p = (Kp * d0_i);
00277   d0_b = (Kb * d0_i);
00278   
00279   lastFrameVirtBuf = d0_i;      /*  start with I Frame */
00280   rc_Q = lastFrameVirtBuf  * 31 / reactionParameter;
00281   
00282   /*   init spatial activity measures */
00283   avg_act = 400;                /* Suggested initial value */
00284   N_act = 1;
00285   
00286   mquant = rc_Q * N_act;
00287   
00288   frameDelayIncrement = (90000 / frameRateRounded); /* num of "delay" units per frame */
00289   bufferFillRate = bit_rate / frameRateRounded; /* VBV buf fills at constant rate */
00290   VBV_buffer = buffer_size;
00291   DBG_PRINT(("\tVBV- delay: %d, fill rate: %d, delay/Frame: %d units, buffer size: %d\n",
00292              VBV_delay, bufferFillRate, frameDelayIncrement, buffer_size));
00293   
00294   result = initGOPRateControl();
00295   
00296   return result;
00297 }

void targetRateControl frame   
 


Variable Documentation

int act_j [static]
 

Definition at line 152 of file rate.c.

int avg_act [static]
 

Definition at line 154 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

int32 bit_rate = -1 [static]
 

Definition at line 84 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

Block blk0
 

Definition at line 630 of file rate.c.

Block blk1
 

Definition at line 726 of file rate.c.

Block blk2
 

Definition at line 727 of file rate.c.

Block blk3
 

Definition at line 728 of file rate.c.

int32 buffer_size = DEFAULT_BUFFER_SIZE [static]
 

Definition at line 83 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

int32 bufferFillRate = 0 [static]
 

Definition at line 90 of file rate.c.

Referenced by initRateControl().

int current_Tx
 

Definition at line 103 of file rate.c.

int currentVirtBuf [static]
 

Definition at line 143 of file rate.c.

int d0_b [static]
 

Definition at line 140 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

int d0_i [static]
 

Definition at line 138 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

int d0_p [static]
 

Definition at line 139 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

char* Frame_header1 = " Fm # Bit GOP V " [static]
 

Definition at line 170 of file rate.c.

char* Frame_header2 = " # type MBs Alloc left Ni Np Nb N_act buff Q_rc Qscale" [static]
 

Definition at line 171 of file rate.c.

char* Frame_header3 = "---- - ---- ------ ------- -- -- -- ----- ------ ---- ----" [static]
 

Definition at line 172 of file rate.c.

char* Frame_trailer1 = " avg virt % GOP % VBV" [static]
 

Definition at line 173 of file rate.c.

char* Frame_trailer2 = " Sx Qx Xx act N_act buffer alloc left left buf delay" [static]
 

Definition at line 174 of file rate.c.

char* Frame_trailer3 = "------ --.-- ------- --- --.-- ------- --- ------- --- ------- ------" [static]
 

Definition at line 175 of file rate.c.

int32 frameDelayIncrement = 0 [static]
 

Definition at line 91 of file rate.c.

Referenced by initRateControl().

char* framePattern
 

Definition at line 183 of file rate.c.

Referenced by initRateControl().

int framePatternLen
 

Definition at line 184 of file rate.c.

Referenced by initRateControl().

int GOP_B = 0
 

Definition at line 109 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

int GOP_I = 0
 

Definition at line 107 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

int GOP_P = 0
 

Definition at line 108 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

int GOP_X = 0
 

Definition at line 106 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

float Kb = 1.4 [static]
 

Definition at line 131 of file rate.c.

Referenced by initRateControl().

float Ki = .7 [static]
 

Definition at line 129 of file rate.c.

float Kp = 1 [static]
 

Definition at line 130 of file rate.c.

Referenced by initRateControl().

int lastFrameVirtBuf [static]
 

Definition at line 142 of file rate.c.

Referenced by initRateControl().

int MB_cnt = -1 [static]
 

Definition at line 145 of file rate.c.

char* MB_header1 = "MB# #bits Q mqt Dj Q_j actj N_act totbits b/MB %alloc %done" [static]
 

Definition at line 177 of file rate.c.

char* MB_header2 = "--- ----- -- --- ------ --- ----- --.-- ------ ---- --- ---" [static]
 

Definition at line 178 of file rate.c.

int mquant [static]
 

Definition at line 160 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

float N_act [static]
 

Definition at line 153 of file rate.c.

Referenced by initRateControl().

int Nb = 0
 

Definition at line 114 of file rate.c.

Referenced by extract_assign_directions(), and initGOPRateControl().

int Ni = 0
 

Definition at line 112 of file rate.c.

Referenced by initGOPRateControl(), main(), SUMA_CreateTable(), SUMA_Householder(), and SUMA_Surface_Curvature().

int Np = 0
 

Definition at line 113 of file rate.c.

Referenced by initGOPRateControl().

int Nx = 0
 

Definition at line 111 of file rate.c.

Referenced by initGOPRateControl(), SUMA_AssignTriBranch(), SUMA_Dijkstra(), and SUMA_IntersectionStrip().

int P_mean [static]
 

Definition at line 158 of file rate.c.

float Qb [static]
 

Definition at line 98 of file rate.c.

float Qi [static]
 

Definition at line 98 of file rate.c.

float Qp [static]
 

Definition at line 98 of file rate.c.

int Qscale [static]
 

Definition at line 161 of file rate.c.

int RateControlMode = VARIABLE_RATE [static]
 

Definition at line 82 of file rate.c.

Referenced by initRateControl().

int rc_bitsThisMB
 

Definition at line 120 of file rate.c.

Referenced by initRateControl().

char rc_buffer[101] [static]
 

Definition at line 180 of file rate.c.

int rc_G [static]
 

Definition at line 133 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

int RC_MB_SAMPLE_RATE = 0
 

Definition at line 127 of file rate.c.

int rc_numBlocks = 0
 

Definition at line 118 of file rate.c.

Referenced by initRateControl().

int rc_Q [static]
 

Definition at line 147 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

int rc_R [static]
 

Definition at line 132 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

int rc_totalFrameBits
 

Definition at line 122 of file rate.c.

Referenced by initRateControl().

int rc_totalMBBits
 

Definition at line 121 of file rate.c.

Referenced by initRateControl().

int rc_totalOverheadBits = 0
 

Definition at line 123 of file rate.c.

Referenced by initRateControl().

int rc_totalQuant = 0
 

Definition at line 119 of file rate.c.

Referenced by initRateControl().

int reactionParameter [static]
 

Definition at line 149 of file rate.c.

Referenced by initRateControl().

int Sb [static]
 

Definition at line 96 of file rate.c.

int Si [static]
 

Definition at line 96 of file rate.c.

int Sp [static]
 

Definition at line 96 of file rate.c.

int Tb
 

Definition at line 101 of file rate.c.

int Ti
 

Definition at line 101 of file rate.c.

Referenced by SUMA_AddNodeIndexColumn().

int total_act_j [static]
 

Definition at line 155 of file rate.c.

int Tp
 

Definition at line 101 of file rate.c.

int var_sblk [static]
 

Definition at line 157 of file rate.c.

int32 VBV_buffer = 0 [static]
 

Definition at line 89 of file rate.c.

Referenced by initRateControl().

int32 VBV_delay = 0 [static]
 

Definition at line 88 of file rate.c.

Referenced by initRateControl().

int Xb [static]
 

Definition at line 94 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

int Xi [static]
 

Definition at line 94 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

int Xp [static]
 

Definition at line 94 of file rate.c.

Referenced by initGOPRateControl(), and initRateControl().

 

Powered by Plone

This site conforms to the following standards: