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

📄 global.h

📁 h.263+ vc++商业源代码
💻 H
字号:
/* global variables */

#include <windows.h>
#include "tmndec.h"

/* choose between declaration (GLOBAL undefined)
 * and definition (GLOBAL defined)
 * GLOBAL is defined in exactly one file (tmndec.c)
 */
#define MAXFILENAME     256  /* maximum length of file pathname */
#define MAXCUSTFILTER   40   /* maximum size of custom filter buffer */

#ifndef GLOBAL
#define EXTERN extern
#else
#define EXTERN
#endif

/* 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 */

/* getbits.c */
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 didct _ANSI_ARGS_((short *block));
void dinit_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();
#endif

/* recon.c */
void recon_comp _ANSI_ARGS_((unsigned char *src, unsigned char *dst,
  int lx, int lx2, int w, int h, int x, int y, int dx, int dy, int flag));
void recon_comp_obmc _ANSI_ARGS_((unsigned char *src, unsigned char *dst,int lx,int lx2,int comp,int w,int h,int x,int y));
void rec _ANSI_ARGS_((unsigned char *s, unsigned char *d, int lx, int lx2, int h));
void recc _ANSI_ARGS_((unsigned char *s, unsigned char *d, int lx, int lx2, int h));
void reco _ANSI_ARGS_((unsigned char *s, int *d, int lx, int lx2, int addflag,int c, int xa, int xb, int ya, int yb));
void rech _ANSI_ARGS_((unsigned char *s, unsigned char *d, int lx, int lx2, int h));
void rechc _ANSI_ARGS_((unsigned char *s, unsigned char *d, int lx, int lx2, int h));
void recho _ANSI_ARGS_((unsigned char *s, int *d, int lx, int lx2, int addflag,int c, int xa, int xb, int ya, int yb));
void recvm _ANSI_ARGS_((unsigned char *s, unsigned char *d, int lx, int lx2, int h));
void recvc _ANSI_ARGS_((unsigned char *s, unsigned char *d, int lx, int lx2, int h));
void recvo _ANSI_ARGS_((unsigned char *s, int *d, int lx, int lx2, int addflag,int c, int xa, int xb, int ya, int yb));
void rec4 _ANSI_ARGS_((unsigned char *s, unsigned char *d, int lx, int lx2, int h));
void rec4c _ANSI_ARGS_((unsigned char *s, unsigned char *d, int lx, int lx2, int h));
void rec4o _ANSI_ARGS_((unsigned char *s, int *d, int lx, int lx2, int addflag,int c, int xa, int xb, int ya, int yb));
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( );


/* global variables */

;

/* zig-zag scan */
EXTERN 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)
 */

EXTERN 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
;


EXTERN int UpLimit ;
EXTERN int DecodeFirst ;
EXTERN char errortext[256];
EXTERN unsigned char *refframe[3],*oldrefframe[3],*bframe[3],*newframe[3];
EXTERN unsigned char *edgeframe[3], *edgeframeorig[3], *exnewframe[3];
EXTERN int dMV[2][5][MBR_MAX+1][MBC_MAX+2];
EXTERN int modemap[MBR_MAX+1][MBC_MAX+2];
EXTERN unsigned char *clp;
EXTERN unsigned char *orgclp;
EXTERN int horizontal_size,vertical_size,mb_width,mb_height;
EXTERN int user_horizontal_size,user_vertical_size;
EXTERN int coded_picture_width, coded_picture_height;
EXTERN int chrom_width,chrom_height,blk_cnt;
EXTERN int pict_type,newgob;
EXTERN int mv_outside_frame,syntax_arith_coding,adv_pred_mode,pb_frame;
EXTERN int long_vectors;
EXTERN int fault,expand;
EXTERN int verbose;
EXTERN int matrix_coefficients;
EXTERN int temp_ref, quant, source_format, tr_framenum , curr_framenum;
#ifdef USE_TIME
EXTERN int framerate;
EXTERN struct timeval tftarget;
#endif




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

EXTERN 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
;

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

/* output */
EXTERN char *outputname;
EXTERN 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

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


char       *image;
unsigned char * Destination ;
unsigned char * DecodeBuf ; 
int BitofOneFrame ;
long hsize ;
int BitRead ;
HGLOBAL hinputBuf ;
HGLOBAL houtputBufYUV ;
HGLOBAL houtputBufM ;
HGLOBAL houtputBufRGB ;

unsigned char * InternalDecoderOutputYUV ;
unsigned char * InternalDecoderOutputM ;
unsigned char * InternalDecoderOutputRGB ;
unsigned char * InternalDecoderInput ;

⌨️ 快捷键说明

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