global.hh
上传用户:aoeyumen
上传日期:2007-01-06
资源大小:3329k
文件大小:5k
源码类别:

DVD

开发平台:

Unix_Linux

  1. /*
  2.    File: global.hh
  3. */
  4. #ifdef __GNUG__
  5. #pragma interface
  6. #endif
  7. #ifndef GLOBAL
  8. #define EXTERN extern
  9. #else
  10. #define EXTERN
  11. #endif
  12. EXTERN LayerData *ld;   // ld = Layer Data
  13. EXTERN VideoStream* vs;  // vs = Video Stream
  14. /* getvlc.c */
  15. int getMBtype (void);
  16. int getMV (void);
  17. int getDMV (void);
  18. int getCBP (void);
  19. int getMBA (void);
  20. int getDClum (void);
  21. int getDCchrom (void);
  22. /* spatscal.c */
  23. void getspatref(void);
  24. #ifdef TRACE     // trace output
  25. inline void printbits(int code, int bits, int len){
  26.   for (int i=0; i<len; i++) printf("%d",(code>>(bits-1-i))&1);
  27. }
  28. #endif
  29. /* global variables */
  30. EXTERN char version[]
  31. #ifdef GLOBAL
  32.   ="video, 96/02/20"
  33. #endif
  34. ;
  35. EXTERN char author[]
  36. #ifdef GLOBAL
  37.   ="1996, Alex Theo de Jong & MPEG Software Simulation Group"
  38. #endif
  39. ;
  40. /* zig-zag scan */
  41. EXTERN unsigned char zig_zag_scan[64]
  42. #ifdef GLOBAL
  43. =
  44. {
  45. #ifdef HAVE_MMX
  46.     0*8+0/* 0*/, 1*8+0/* 1*/, 0*8+1/* 8*/, 0*8+2/*16*/, 1*8+1/* 9*/, 2*8+0/* 2*/, 3*8+0/* 3*/, 2*8+1/*10*/,
  47.     1*8+2/*17*/, 0*8+3/*24*/, 0*8+4/*32*/, 1*8+3/*25*/, 2*8+2/*18*/, 3*8+1/*11*/, 4*8+0/* 4*/, 5*8+0/* 5*/,
  48.     4*8+1/*12*/, 5*8+2/*19*/, 2*8+3/*26*/, 1*8+4/*33*/, 0*8+5/*40*/, 0*8+6/*48*/, 1*8+5/*41*/, 2*8+4/*34*/,
  49.     3*8+3/*27*/, 4*8+2/*20*/, 5*8+1/*13*/, 6*8+0/* 6*/, 7*8+0/* 7*/, 6*8+1/*14*/, 5*8+2/*21*/, 4*8+3/*28*/,
  50.     3*8+4/*35*/, 2*8+5/*42*/, 1*8+6/*49*/, 0*8+7/*56*/, 1*8+7/*57*/, 2*8+6/*50*/, 3*8+5/*43*/, 4*8+4/*36*/,
  51.     5*8+3/*29*/, 6*8+2/*22*/, 7*8+1/*15*/, 7*8+2/*23*/, 6*8+3/*30*/, 5*8+4/*37*/, 4*8+5/*44*/, 3*8+6/*51*/,
  52.     2*8+7/*58*/, 3*8+7/*59*/, 4*8+6/*52*/, 5*8+5/*45*/, 6*8+4/*38*/, 7*8+3/*31*/, 7*8+4/*39*/, 6*8+5/*46*/,
  53.     7*8+6/*53*/, 4*8+7/*60*/, 5*8+7/*61*/, 6*8+6/*54*/, 7*8+5/*47*/, 7*8+6/*55*/, 6*8+7/*62*/, 7*8+7/*63*/
  54. #else
  55.   0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,
  56.   12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,
  57.   35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,
  58.   58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63
  59. #endif
  60. }
  61. #endif
  62. ;
  63. /* alternate scan */
  64. EXTERN unsigned char alternate_scan[64]
  65. #ifdef GLOBAL
  66. =
  67. {
  68. #ifdef HAVE_MMX
  69.      0*8+0/*0 */, 0*8+1/* 8*/, 0*8+2/*16*/, 0*8+3/*24*/, 1*8+0/* 1*/, 1*8+1/* 9*/, 2*8+0/* 2*/, 2*8+1/*10*/,
  70.      1*8+2/*17*/, 1*8+3/*25*/, 0*8+4/*32*/, 0*8+5/*40*/, 0*8+6/*48*/, 0*8+7/*56*/, 1*8+7/*57*/, 1*8+6/*49*/,
  71.      1*8+5/*41*/, 1*8+4/*33*/, 2*8+3/*26*/, 2*8+2/*18*/, 3*8+0/* 3*/, 3*8+1/*11*/, 4*8+0/* 4*/, 4*8+1/*12*/,
  72.      3*8+2/*19*/, 3*8+3/*27*/, 2*8+4/*34*/, 2*8+5/*42*/, 2*8+6/*50*/, 2*8+7/*58*/, 3*8+4/*35*/, 3*8+5/*43*/,
  73.      3*8+6/*51*/, 3*8+7/*59*/, 4*8+2/*20*/, 4*8+3/*28*/, 5*8+0/* 5*/, 5*8+1/*13*/, 6*8+0/* 6*/, 6*8+1/*14*/,
  74.      5*8+2/*21*/, 5*8+3/*29*/, 4*8+4/*36*/, 4*8+5/*44*/, 4*8+6/*52*/, 4*8+7/*60*/, 5*8+4/*37*/, 5*8+5/*45*/,
  75.      5*8+6/*53*/, 5*8+7/*61*/, 6*8+2/*22*/, 6*8+3/*30*/, 7*8+0/* 7*/, 7*8+1/*15*/, 7*8+2/*23*/, 7*8+3/*31*/,
  76.      6*8+4/*38*/, 6*8+5/*46*/, 6*8+6/*54*/, 6*8+7/*62*/, 7*8+4/*39*/, 7*8+5/*47*/, 7*8+6/*55*/, 7*8+6/*63*/
  77. #else
  78.   0,8,16,24,1,9,2,10,17,25,32,40,48,56,57,49,
  79.   41,33,26,18,3,11,4,12,19,27,34,42,50,58,35,43,
  80.   51,59,20,28,5,13,6,14,21,29,36,44,52,60,37,45,
  81.   53,61,22,30,7,15,23,31,38,46,54,62,39,47,55,63
  82. #endif
  83. }
  84. #endif
  85. ;
  86. /* default intra quantization matrix */
  87. EXTERN unsigned char default_intra_quantizer_matrix[64]
  88. #ifdef GLOBAL
  89. =
  90. {
  91.   8, 16, 19, 22, 26, 27, 29, 34,
  92.   16, 16, 22, 24, 27, 29, 34, 37,
  93.   19, 22, 26, 27, 29, 34, 34, 38,
  94.   22, 22, 26, 27, 29, 34, 37, 40,
  95.   22, 26, 27, 29, 32, 35, 40, 48,
  96.   26, 27, 29, 32, 35, 40, 48, 58,
  97.   26, 27, 29, 34, 38, 46, 56, 69,
  98.   27, 29, 35, 38, 46, 56, 69, 83
  99. }
  100. #endif
  101. ;
  102. /* non-linear quantization coefficient table */
  103. EXTERN unsigned char non_linear_mquant_table[32]
  104. #ifdef GLOBAL
  105. =
  106. {
  107.    0, 1, 2, 3, 4, 5, 6, 7,
  108.    8,10,12,14,16,18,20,22,
  109.   24,28,32,36,40,44,48,52,
  110.   56,64,72,80,88,96,104,112
  111. }
  112. #endif
  113. ;
  114. /* color space conversion coefficients
  115.  *
  116.  * entries are {crv,cbu,cgu,cgv}
  117.  *
  118.  * crv=(255/224)*65536*(1-cr)/0.5
  119.  * cbu=(255/224)*65536*(1-cb)/0.5
  120.  * cgu=(255/224)*65536*(cb/cg)*(1-cb)/0.5
  121.  * cgv=(255/224)*65536*(cr/cg)*(1-cr)/0.5
  122.  *
  123.  * where Y=cr*R+cg*G+cb*B (cr+cg+cb=1)
  124.  */
  125. EXTERN int convmat[8][4]
  126. #ifdef GLOBAL
  127. =
  128. {
  129.   {117504, 138453, 13954, 34903}, /* no sequence_display_extension */
  130.   {117504, 138453, 13954, 34903}, /* ITU-R Rec. 709 (1990) */
  131.   {104597, 132201, 25675, 53279}, /* unspecified */
  132.   {104597, 132201, 25675, 53279}, /* reserved */
  133.   {104448, 132798, 24759, 53109}, /* FCC */
  134.   {104597, 132201, 25675, 53279}, /* ITU-R Rec. 624-4 System B, G */
  135.   {104597, 132201, 25675, 53279}, /* SMPTE 170M */
  136.   {117579, 136230, 16907, 35559}  /* SMPTE 240M (1987) */
  137. }
  138. #endif
  139. ;
  140. EXTERN int quiet;
  141. #ifdef TRACE
  142. EXTERN int trace;
  143. #endif
  144. EXTERN char errortext[256];
  145. EXTERN unsigned char *refframe[3],*oldrefframe[3],*auxframe[3],*newframe[3];
  146. EXTERN int horizontal_size,vertical_size,mb_width,mb_height;
  147. EXTERN int coded_picture_width, coded_picture_height;
  148. EXTERN int chroma_format,chrom_width,chrom_height,blk_cnt;
  149. EXTERN int pict_type;
  150. EXTERN int forw_r_size,back_r_size;
  151. EXTERN int full_forw,full_back;
  152. EXTERN int fault;
  153. EXTERN int verbose;
  154. EXTERN int prog_seq;
  155. EXTERN int h_forw_r_size,v_forw_r_size,h_back_r_size,v_back_r_size;
  156. EXTERN int dc_prec,pict_struct,topfirst,frame_pred_dct,conceal_mv;
  157. EXTERN int intravlc,repeatfirst,prog_frame;
  158. EXTERN int secondfield;
  159. EXTERN int stwc_table_index,llw,llh,hm,hn,vm,vn;
  160. EXTERN int lltempref,llx0,lly0,llprog_frame,llfieldsel;
  161. EXTERN unsigned char *llframe0[3],*llframe1[3];
  162. EXTERN short *lltmp;
  163. EXTERN char *llinputname;
  164. // EXTERN int twostreams 
  165. EXTERN int sflag;
  166. EXTERN int matrix_coefficients;
  167. EXTERN int framerate;
  168. EXTERN int playedlastframe;