Main Page | Class List | File List | Class Members | File Members

vid_sac.c File Reference

#include <stdio.h>
#include "vid_sim.h"
#include "video_codec.h"

Go to the source code of this file.

Defines

#define q1   16384
#define q2   32768
#define q3   49152
#define top   65535

Functions

int AR_Encode (int index, int cumul_freq[])
int bit_opp_bits (int bit)
int encoder_flush ()
int bit_in_psc_layer (int bit)
int indexfn (int value, int table[], int max)

Variables

video_codecVidSt
long low = 0 high=top opposite_bits=0 length=0 zerorun=0


Define Documentation

#define q1   16384
 

Definition at line 59 of file vid_sac.c.

Referenced by AR_Encode().

#define q2   32768
 

Definition at line 60 of file vid_sac.c.

#define q3   49152
 

Definition at line 61 of file vid_sac.c.

#define top   65535
 

Definition at line 62 of file vid_sac.c.


Function Documentation

int AR_Encode int  index,
int  cumul_freq[]
 

Definition at line 86 of file vid_sac.c.

References bit_opp_bits(), bitcount(), low, and q1.

Referenced by Code_sac_Coeff(), CodeTCoef(), Count_sac_BitsMB(), and Count_sac_BitsVectors().

00087 {
00088   int bitcount=0;
00089 
00090   if (index<0) 
00091     return -1; /* Escape Code */
00092 
00093   length = high - low + 1;
00094   high = low - 1 + (length * cumul_freq[index]) / cumul_freq[0];
00095   low += (length * cumul_freq[index+1]) / cumul_freq[0];
00096 
00097   for ( ; ; ) {
00098     if (high < q2) {
00099       bitcount+=bit_opp_bits(0);
00100     }
00101     else if (low >= q2) {
00102       bitcount+=bit_opp_bits(1);        
00103       low -= q2; 
00104       high -= q2;
00105     }
00106     else if (low >= q1 && high < q3) {
00107       opposite_bits += 1; 
00108       low -= q1; 
00109       high -= q1;
00110     }
00111     else break;
00112  
00113     low *= 2; 
00114     high = 2*high+1;
00115   }
00116   return bitcount;
00117 }

int bit_in_psc_layer int  bit  ) 
 

Definition at line 190 of file vid_sac.c.

References bitcount(), putbits(), video_codec::tf, video_codec::trace, and VidSt.

Referenced by bit_opp_bits().

00191 {
00192   void putbits (int, int);
00193   int bitcount = 0;
00194 
00195   if (zerorun > 13) {
00196     if ((VidSt->trace))
00197       fprintf((VidSt->tf), "PSC emulation ... Bit stuffed.\n");
00198     putbits (1, 1);
00199     bitcount++;
00200     zerorun = 0;
00201   }
00202 
00203   putbits (1, bit);
00204   bitcount++;
00205 
00206   if (bit)
00207     zerorun = 0;
00208   else
00209     zerorun++;
00210 
00211   return bitcount;
00212 }

int bit_opp_bits int  bit  ) 
 

Definition at line 119 of file vid_sac.c.

References bit_in_psc_layer(), and bitcount().

Referenced by AR_Encode(), and encoder_flush().

00120 {                                   
00121   int bitcount=0;
00122 
00123   bitcount = bit_in_psc_layer(bit);
00124 
00125   while(opposite_bits > 0){
00126     bitcount += bit_in_psc_layer(!bit);
00127     opposite_bits--;
00128   }
00129   return bitcount;
00130 }

int encoder_flush  ) 
 

Definition at line 150 of file vid_sac.c.

References bit_opp_bits(), bitcount(), low, video_codec::tf, video_codec::trace, and VidSt.

Referenced by code_video(), and CountBitsSlice().

00151 {
00152   int bitcount = 0;
00153 
00154   if ((VidSt->trace))
00155     fprintf((VidSt->tf), "encoder_flush:\n");
00156 
00157   opposite_bits++;
00158   if (low < q1) {
00159     bitcount+=bit_opp_bits(0);
00160   }
00161   else {
00162     bitcount+=bit_opp_bits(1);
00163   }
00164   low = 0; 
00165   high = top;
00166 
00167   zerorun=0;
00168 
00169   return bitcount;
00170 }

int indexfn int  value,
int  table[],
int  max
 

Definition at line 233 of file vid_sac.c.

Referenced by Code_sac_Coeff(), Count_sac_BitsMB(), and Count_sac_BitsVectors().

00234 {
00235   int n=0;
00236 
00237   while(1) {
00238     if (table[n++]==value) return n-1;
00239     if (n>max) return -1;
00240   }
00241 
00242 }


Variable Documentation

long low = 0 high=top opposite_bits=0 length=0 zerorun=0 [static]
 

Definition at line 64 of file vid_sac.c.

Referenced by AR_Encode(), and encoder_flush().

video_codec* VidSt
 

Definition at line 16 of file vid_wrapper.c.


Generated on Sun Jul 16 16:27:48 2006 by  doxygen 1.3.9.1