⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 global.h

📁 文件内包含H.263视频编码算法和解码算法2个文件
💻 H
字号:
/************************************************************************
 *
 *  global.h, global variables for tmndecode (H.263 decoder)
 */


/* choose between declaration (GLOBAL undefined)
 * and definition (GLOBAL defined)
 * GLOBAL is defined in exactly one file (tmndec.c)
 */


/* Some macros */
#define mmax(a, b)        ((a) > (b) ? (a) : (b))
#define mmin(a, b)        ((a) < (b) ? (a) : (b))
#define mnint(a)        ((a) < 0 ? (int)(a - 0.5) : (int)(a + 0.5))
#define sign(a)         ((a) < 0 ? -1 : 1)

/* prototypes of global functions */
void icpDisplay _ANSI_ARGS_((unsigned char *y, unsigned char *u, unsigned char *v));

/* getbits.c */
void initbits _ANSI_ARGS_((void));
void fillbfr _ANSI_ARGS_((void));
unsigned int showbits _ANSI_ARGS_((int n));
unsigned int getbits1 _ANSI_ARGS_((void));
void flushbits _ANSI_ARGS_((int n));
unsigned int getbits _ANSI_ARGS_((int n));

/* getblk.c */
void getblock _ANSI_ARGS_((int comp, int mode));
void get_sac_block _ANSI_ARGS_((int comp, int mode));

/* gethdr.c */
int getheader _ANSI_ARGS_((void));
void startcode _ANSI_ARGS_((void));

/* getpic.c */
void getpicture _ANSI_ARGS_((int *framenum));
void putlast _ANSI_ARGS_((int framenum));

/* getvlc.c */
int getTMNMV _ANSI_ARGS_((void));
int getMCBPC _ANSI_ARGS_((void));
int getMODB _ANSI_ARGS_((void));
int getMCBPCintra _ANSI_ARGS_((void));
int getCBPY _ANSI_ARGS_((void));

/* idct.c */
void idct _ANSI_ARGS_((short *block));
void init_idct _ANSI_ARGS_((void));

/* tmndec.c */
void error _ANSI_ARGS_((char *text));
void printbits _ANSI_ARGS_((int code, int bits, int len));
#ifdef USE_TIME
void doframerate(int pb);
#endif

/* recon.c */
void reconstruct _ANSI_ARGS_((int bx, int by, int P, int bdx, int bdy));

/* store.c */
void storeframe _ANSI_ARGS_((unsigned char *src[], int frame));

/* sac.c */
int decode_a_symbol _ANSI_ARGS_((int cumul_freq[ ]));
void decoder_reset( );

#ifdef DISPLAY
/* display.c */
void init_display _ANSI_ARGS_((char *name));
void exit_display _ANSI_ARGS_((void));
void dither _ANSI_ARGS_((unsigned char *src[]));
void init_dither _ANSI_ARGS_((void));

/* dither.c */
void ord4x4_dither_init _ANSI_ARGS_((void));
void ord4x4_dither_frame _ANSI_ARGS_((unsigned char *[], unsigned char *));

/* yuv2rgb.c */
void Color16DitherImage _ANSI_ARGS_((unsigned char *[], unsigned char *));
void Color32DitherImage _ANSI_ARGS_((unsigned char *[], unsigned char *));
void InitColorDither _ANSI_ARGS_((int));
/* yuvrgb24.c */
void ConvertYUVtoRGB(
  unsigned char *src0,
  unsigned char *src1,
  unsigned char *src2,
  unsigned char *dst_ori,
  int width,
  int height
);
#endif



/* global variables */

char version[]
#ifdef GLOBAL
  ="my test 1\n"
#endif
;

/* zig-zag scan */
unsigned char zig_zag_scan[64]
#ifdef GLOBAL
=
{
  0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,
  12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,
  35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,
  58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63
}
#endif
;


/* color space conversion coefficients
 *
 * entries are {crv,cbu,cgu,cgv}
 *
 * crv=(255/224)*65536*(1-cr)/0.5
 * cbu=(255/224)*65536*(1-cb)/0.5
 * cgu=(255/224)*65536*(cb/cg)*(1-cb)/0.5
 * cgv=(255/224)*65536*(cr/cg)*(1-cr)/0.5
 *
 * where Y=cr*R+cg*G+cb*B (cr+cg+cb=1)
 */

int convmat[8][4]
#ifdef GLOBAL
=
{
  {117504, 138453, 13954, 34903}, /* no sequence_display_extension */
  {117504, 138453, 13954, 34903}, /* ITU-R Rec. 709 (1990) */
  {104597, 132201, 25675, 53279}, /* unspecified */
  {104597, 132201, 25675, 53279}, /* reserved */
  {104448, 132798, 24759, 53109}, /* FCC */
  {104597, 132201, 25675, 53279}, /* ITU-R Rec. 624-4 System B, G */
  {104597, 132201, 25675, 53279}, /* SMPTE 170M */
  {117579, 136230, 16907, 35559}  /* SMPTE 240M (1987) */
}
#endif
;

int quiet;
int trace;
char errortext[256];
unsigned char *refframe[3],*oldrefframe[3],*bframe[3],*newframe[3];
unsigned char *edgeframe[3], *edgeframeorig[3], *exnewframe[3];
int MV[2][5][MBR+1][MBC+2];
int modemap[MBR+1][MBC+2];
unsigned char *clp;
int horizontal_size,vertical_size,mb_width,mb_height;
int coded_picture_width, coded_picture_height;
int chrom_width,chrom_height,blk_cnt;
int pict_type,newgob;
int mv_outside_frame,syntax_arith_coding,adv_pred_mode,pb_frame;
int long_vectors;
int fault,expand;
int verbose;
int refidct;
int matrix_coefficients;
int temp_ref, prev_temp_ref, quant, source_format;

int framerate;
unsigned int targetTime;


int trd, trb, bscan, bquant;
int bscan_tab[]
#ifdef GLOBAL
= {2,4,6,8}
#endif
;
int bquant_tab[]
#ifdef GLOBAL
= {5,6,7,8}
#endif
;

int OM[5][8][8]
#ifdef GLOBAL
= {
{
  {4,5,5,5,5,5,5,4},
  {5,5,5,5,5,5,5,5},
  {5,5,6,6,6,6,5,5},
  {5,5,6,6,6,6,5,5},
  {5,5,6,6,6,6,5,5},
  {5,5,6,6,6,6,5,5},
  {5,5,5,5,5,5,5,5},
  {4,5,5,5,5,5,5,4},
},{
  {2,2,2,2,2,2,2,2},
  {1,1,2,2,2,2,1,1},
  {1,1,1,1,1,1,1,1},
  {1,1,1,1,1,1,1,1},
  {0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0},
},{
  {0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0},
  {1,1,1,1,1,1,1,1},
  {1,1,1,1,1,1,1,1},
  {1,1,2,2,2,2,1,1},
  {2,2,2,2,2,2,2,2},
},{
  {0,0,0,0,1,1,1,2},
  {0,0,0,0,1,1,2,2},
  {0,0,0,0,1,1,2,2},
  {0,0,0,0,1,1,2,2},
  {0,0,0,0,1,1,2,2},
  {0,0,0,0,1,1,2,2},
  {0,0,0,0,1,1,2,2},
  {0,0,0,0,1,1,1,2},
},{
  {2,1,1,1,0,0,0,0},
  {2,2,1,1,0,0,0,0},
  {2,2,1,1,0,0,0,0},
  {2,2,1,1,0,0,0,0},
  {2,2,1,1,0,0,0,0},
  {2,2,1,1,0,0,0,0},
  {2,2,1,1,0,0,0,0},
  {2,1,1,1,0,0,0,0},
}}
#endif
;

int roundtab[16]
#ifdef GLOBAL
=  {0,0,0,1,1,1,1,1,1,1,1,1,1,1,2,2}
#endif
;

/* output */
char *outputname;
int outtype;
#define T_YUV      0
#define T_SIF      1
#define T_TGA      2
#define T_PPM      3
#define T_X11      4
#define T_YUV_CONC 5
#define T_WIN      6

struct ld {
	int infile;
  /* bit input */
  unsigned char rdbfr[2051];
  unsigned char *rdptr;
  unsigned char inbfr[16];
  int incnt;
  int bitcnt;
  /* block data */
  short block[12][64];
} base,*ld;

char *openfilename;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -