?? global.h
字號(hào):
/* global.h, 聲明全局變量和函數(shù) */
#include "avi2m1v.h"#include <windows.h>
#include <vfw.h>
#include <time.h>
/* 全局函數(shù)的聲明 */
#ifndef GLOBAL
#define EXTERN extern
#else
#define EXTERN
#endif
/* avi2mpg1.c */
void TestCPU(void);
/* conform.c */void range_checks(void);
/* fdctref.c */void init_fdct(void);void fdct(short *block);/* idct.c */void idct(short *block);void init_idct(void);/* motion.c */void motion_estimation(unsigned char *oldorg, unsigned char *neworg, unsigned char *oldref, unsigned char *newref, unsigned char *cur, unsigned char *curref, int sxf, int syf, int sxb, int syb, struct mbinfo *mbi, int secondfield, int ipflag);/* avi2m1v.c */
int avi2m1v(char *);void error(char *text);/* predict.c */void predict(unsigned char *reff[], unsigned char *refb[], unsigned char *cur[3], int secondfield, struct mbinfo *mbi);/* putbits.c */void initbits(void);void putbits(int val, int n);void alignbits(void);void flushbits(void);
int bitcount(void);/* puthdr.c */void putseqhdr(void);void putseqext(void);void putseqdispext(void);void putuserdata(char *userdata);void putgophdr(int frame, int closed_gop);void putpicthdr(void);void putpictcodext(void);void putseqend(void);/* putmpg.c */void putintrablk(short *blk, int cc);void putnonintrablk(short *blk);void putmv(int dmv, int f_code);/* putpic.c */void putpict(unsigned char *frame);/* putseq.c */void putseq(void);/* putvlc.c */void putDClum(int val);void putDCchrom(int val);void putACfirst(int run, int val);void putAC(int run, int signed_level, int vlcformat);void putaddrinc(int addrinc);void putmbtype(int pict_type, int mb_type);void putmotioncode(int motion_code);void putdmv(int dmv);void putcbp(int cbp);/* quantize.c */
int quant_intra(short *src, short *dst, int dc_prec,
unsigned char *quant_mat, unsigned short *recip_quant_mat, int mquant);
int quant_non_intra(short *src, short *dst,
unsigned char *quant_mat, unsigned short *recip_quant_mat, int mquant);
void iquant_intra(short *src, short *dst, int dc_prec,
unsigned char *quant_mat, int mquant);
void iquant_non_intra(short *src, short *dst,
unsigned char *quant_mat, int mquant);
/* ratectl.c */void rc_init_seq(void);void rc_init_GOP(int np, int nb);void rc_init_pict(unsigned char *frame);void rc_update_pict(void);int rc_start_mb(void);int rc_calc_mquant(int j);void vbv_end_of_picture(void);void calc_vbv_delay(void);/* readpic.c */void readframe(unsigned long lCurFrame, unsigned char *frame[]);/* stats.c */void calcSNR(unsigned char *org[3], unsigned char *rec[3]);void stats(void);/* transfrm.c */void transform(unsigned char *pred[], unsigned char *cur[], struct mbinfo *mbi, short blocks[][64]);void itransform(unsigned char *pred[], unsigned char *cur[], struct mbinfo *mbi, short blocks[][64]);void dct_type_estimation(unsigned char *pred, unsigned char *cur, struct mbinfo *mbi);/* writepic.c */void writeframe(char *fname, unsigned char *frame[]);/* global variables */
EXTERN int wr_seqh2gop;
EXTERN char version[]#ifdef GLOBAL ="AVI2MPG1 V1.11, July 10th, 2000"#endif;EXTERN char author[]#ifdef GLOBAL ="(C) 1997, 98, 99, 2000 John Schlichther"#endif;
EXTERN unsigned long length;
EXTERN WAVEFORMATEX pWavFormat;
EXTERN unsigned int vbv_ovflow;
EXTERN unsigned int vbv_unflow;
EXTERN char video_param_filename[_MAX_PATH];
EXTERN unsigned int use_v_param_file;EXTERN unsigned long last_good_video_frame;
EXTERN unsigned int fake_bad_frames;
EXTERN unsigned int video_only;
EXTERN unsigned int frame_repl;
EXTERN unsigned int vbv_size;
EXTERN unsigned int bad_frame_count;
EXTERN unsigned int bad_audio_count;
EXTERN int m_search_size;
EXTERN time_t start_time;
EXTERN unsigned long bytes_processed;
// multiplex error counts
EXTERN unsigned int audio_time_out;
EXTERN unsigned int video_time_out;
EXTERN unsigned int audio_end_early;
EXTERN unsigned int video_end_early;
/* zig-zag 掃描 */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;/* 另一種掃描方式 */EXTERN unsigned char alternate_scan[64]#ifdef GLOBAL={ 0,8,16,24,1,9,2,10,17,25,32,40,48,56,57,49, 41,33,26,18,3,11,4,12,19,27,34,42,50,58,35,43, 51,59,20,28,5,13,6,14,21,29,36,44,52,60,37,45, 53,61,22,30,7,15,23,31,38,46,54,62,39,47,55,63}#endif;/* 默認(rèn)的幀內(nèi)量化矩陣 */EXTERN unsigned char default_intra_quantizer_matrix[64]#ifdef GLOBAL={ 8, 16, 19, 22, 26, 27, 29, 34, 16, 16, 22, 24, 27, 29, 34, 37, 19, 22, 26, 27, 29, 34, 34, 38, 22, 22, 26, 27, 29, 34, 37, 40, 22, 26, 27, 29, 32, 35, 40, 48, 26, 27, 29, 32, 35, 40, 48, 58, 26, 27, 29, 34, 38, 46, 56, 69, 27, 29, 35, 38, 46, 56, 69, 83}#endif;/* 非線性量化系數(shù)表 */EXTERN unsigned char non_linear_mquant_table[32]#ifdef GLOBAL={ 0, 1, 2, 3, 4, 5, 6, 7, 8,10,12,14,16,18,20,22, 24,28,32,36,40,44,48,52, 56,64,72,80,88,96,104,112}#endif;EXTERN unsigned char map_non_linear_mquant[113] #ifdef GLOBAL={0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,16,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,24,24,24,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,30,30,30,30,30,30,30,31,31,31,31,31}#endif;/* 圖像數(shù)據(jù)數(shù)組 *//* 重建幀 */EXTERN unsigned char *newrefframe[3], *oldrefframe[3], *auxframe[3];/* 原始幀 */EXTERN unsigned char *neworgframe[3], *oldorgframe[3], *auxorgframe[3];/* 當(dāng)前幀預(yù)測(cè) */EXTERN unsigned char *predframe[3];/* 8*8 塊數(shù)據(jù) */EXTERN short (*blocks)[64];/* 量化矩陣 */EXTERN unsigned char intra_q[64], inter_q[64];EXTERN unsigned short recip_intra_q[64], recip_inter_q[64];
EXTERN unsigned char chrom_intra_q[64],chrom_inter_q[64];/* DCT系數(shù)(0,0)的預(yù)測(cè)值 */EXTERN int dc_dct_pred[3];/* 宏塊邊信息矩陣 */EXTERN struct mbinfo *mbinfo;/* 運(yùn)動(dòng)預(yù)測(cè)參數(shù) */EXTERN struct motion_data *motion_data;/* 限幅表 */EXTERN unsigned char *clp;
/* U V 臨時(shí)緩存 */
EXTERN unsigned char *Ubuffer, *Vbuffer, *Ubuffer422, *Vbuffer422, *TempFilterBuffer;
/* 名稱(chēng)字符串 */EXTERN char id_string[256], tplorg[256], tplref[256];EXTERN char iqname[256], niqname[256];EXTERN char statname[256];EXTERN char errortext[256];EXTERN FILE *outfile, *statfile; /* 文件描述 */EXTERN int inputtype; /* 輸入幀格式 */EXTERN int quiet; /* 關(guān)閉警告信息 *//* 編碼模型參數(shù) */EXTERN int N; /* 圖像組中的幀的數(shù)目 */EXTERN int M; /* I/P幀之間的距離*/EXTERN int P; /* 片斷刷新間隔 */EXTERN int nframes; /* 用來(lái)編碼的幀的總數(shù) */EXTERN int frame0, tc0; /* 第一幀的編號(hào)及時(shí)間代碼 */EXTERN int fieldpic; /* 使用場(chǎng)圖片 */
EXTERN unsigned int system_byterate_parm;
EXTERN unsigned int audio_bitrate_parm;
EXTERN unsigned int audio_layer_parm;
EXTERN unsigned int joint_stereo_parm;
EXTERN unsigned int vcd_parm;
EXTERN unsigned int crop_size;
EXTERN unsigned int crop_horz;
EXTERN unsigned int crop_vert;
EXTERN unsigned int forced_frame_rate;
EXTERN int horizontal_size, vertical_size; /* 幀的大小*/EXTERN int width, height; /* 編碼后的幀的大小再乘上16或32 */EXTERN int chrom_width,chrom_height,block_count;EXTERN int mb_width, mb_height; /* 宏塊大小 */EXTERN int width2, height2, mb_height2, chrom_width2; /* 圖像大小 */EXTERN int aspectratio; /* 高寬比信息 */EXTERN int frame_rate_code; /* 幀速率的編碼值 */EXTERN double frame_rate; /* 每秒幀數(shù) */EXTERN double bit_rate; /* 每秒比特?cái)?shù) */EXTERN int vbv_buffer_size; /* VBV 緩存器的大小 */EXTERN int constrparms; /* 約束參數(shù)標(biāo)志(MPEG-1) */EXTERN int load_iquant, load_niquant; /* 不使用缺省的量化矩陣 */EXTERN int load_ciquant,load_cniquant;
EXTERN unsigned int use_image_noise_reduction; /* 濾除輸入AVI的噪聲*/EXTERN int profile, level; /* 語(yǔ)法/參數(shù)約束*/EXTERN int prog_seq; /* 前向序列 */EXTERN int chroma_format;EXTERN int low_delay; EXTERN int video_format; /* PAL, NTSC, SECAM 或MAC */EXTERN int color_primaries; /* 源的色坐標(biāo) */EXTERN int transfer_characteristics; EXTERN int matrix_coefficients; /* Eg,Eb,Er / Y,Cb,Cr 矩陣系數(shù) */EXTERN int display_horizontal_size, display_vertical_size; /* 顯示大小 */EXTERN int temp_ref; EXTERN int pict_type; /* 圖像編碼類(lèi)型 (I, P 或 B) */EXTERN int vbv_delay; /* 視頻緩存確認(rèn)器延時(shí)(1/90000 seconds) */EXTERN int forw_hor_f_code, forw_vert_f_code;EXTERN int back_hor_f_code, back_vert_f_code; /* 運(yùn)動(dòng)向量范圍 */EXTERN int dc_prec; /* 幀內(nèi)編碼塊的DC系數(shù)精度*/EXTERN int pict_struct; /* 圖像結(jié)構(gòu)*/EXTERN int topfirst; /* 先顯示上半部分場(chǎng)圖像 */ /* 僅用幀預(yù)測(cè)和幀DCT (I,P,B,current) */EXTERN int frame_pred_dct_tab[3], frame_pred_dct;EXTERN int conceal_tab[3]; /* 使用隱藏運(yùn)動(dòng)向量 */EXTERN int qscale_tab[3], q_scale_type; /* 線性/非線性量化表 */EXTERN int intravlc_tab[3], intravlc; /* 幀內(nèi)vlc格式 (I,P,B,current) */EXTERN int altscan_tab[3], altscan; /* 其他掃描方式(I,P,B,current) */EXTERN int repeatfirst; /* 在第二場(chǎng)圖像之后重復(fù)第一場(chǎng)*/EXTERN int prog_frame; /* 前向幀 */
/*與CPU有關(guān)的參數(shù)*/
EXTERN unsigned int cpu_MMX;
EXTERN unsigned int cpu_3DNow;
/* 內(nèi)部算法參數(shù)*/
EXTERN unsigned int doublePrecision;
EXTERN unsigned int fastQuantization;
EXTERN unsigned int fastMotionCompensationLevel;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -