📄 global.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 + -