DGlobal.cpp
上传用户:panstart
上传日期:2022-04-12
资源大小:199k
文件大小:8k
源码类别:

IP电话/视频会议

开发平台:

C++ Builder

  1. ////////////////////////////////////////////////////////////////////////////
  2. //
  3. //
  4. //    Project     : VideoNet version 1.1.
  5. //    Description : Peer to Peer Video Conferencing over the LAN.
  6. //   Author      : Nagareshwar Y Talekar ( nsry2002@yahoo.co.in)
  7. //    Date        : 15-6-2004.
  8. //
  9. //    This is the modified version of tmndecode (H.263 decoder) 
  10. //    written by Karl & Robert.It was in ANSI C. I have converted into C++
  11. //    so that it can be integrated into any windows application. I have 
  12. //    removed some of the files which had display and file storing 
  13. //    functions.I have removed the unnecessary code and also added some
  14. //    new files..
  15. //   Original library dealt with files. Input & Output , both were files.
  16. //    I have done some major changes so that it can be used for real time 
  17. //    decoding process. Now one can use this library for decoding H263 frames. 
  18. //
  19. //
  20. //    File description : 
  21. //    Name    : DGlobal.cpp
  22. //   Details : Definitions of global variables.
  23. //
  24. /////////////////////////////////////////////////////////////////////////////
  25. #include "DGlobal.h"
  26. // Variable definitions....
  27.    char version[200]="tmndecode v1.7n(C) 1995, 1996 Telenor R&Dn";
  28.    int quiet=1;  //keep quiet
  29.    int trace=0;  //don't trace....
  30.    char errortext[256];
  31.    unsigned char *refframe[3],*oldrefframe[3],*bframe[3],*newframe[3];
  32.    unsigned char *edgeframe[3], *edgeframeorig[3], *exnewframe[3];
  33.    int MV[2][5][MBR+1][MBC+2];
  34.    int modemap[MBR+1][MBC+2];
  35.    unsigned char *clp;
  36.    int horizontal_size,vertical_size,mb_width,mb_height;
  37.    int coded_picture_width, coded_picture_height;
  38.    int chrom_width,chrom_height,blk_cnt;
  39.    int pict_type,newgob;
  40.    int mv_outside_frame,syntax_arith_coding,adv_pred_mode,pb_frame;
  41.    int long_vectors;
  42.    int fault,expand;
  43.    int verbose;
  44.    int refidct;
  45.    int matrix_coefficients;
  46.    int temp_ref, prev_temp_ref, quant, source_format;
  47.    int framerate;
  48.    unsigned char *cframe=NULL;
  49.    int csize;
  50.    int cindex;
  51.    struct ld  base,*ld;
  52.    unsigned char *yp,*up,*vp;
  53.    // log file for decoder...
  54.    FILE *dlog=NULL;
  55.   #ifndef WIN32
  56.    struct timeval tftarget;
  57.   #else
  58.    unsigned int targetTime;
  59.   #endif
  60.    int roundtab[16]=  {0,0,0,1,1,1,1,1,1,1,1,1,1,1,2,2};
  61.   //output
  62.    char *outputname;
  63.    int outtype;
  64.    
  65.    int trd, trb, bscan, bquant;
  66.    int bscan_tab[]= {2,4,6,8};
  67.    int bquant_tab[]= {5,6,7,8};
  68.   
  69. // zig-zag scan 
  70.   unsigned char zig_zag_scan[64]=
  71.   {
  72.   0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,
  73.   12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,
  74.   35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,
  75.   58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63
  76.   };
  77. // /*color space conversion coefficients
  78. // *
  79. // * entries are {crv,cbu,cgu,cgv}
  80. // *
  81. // * crv=(255/224)*65536*(1-cr)/0.5
  82. // * cbu=(255/224)*65536*(1-cb)/0.5
  83. // * cgu=(255/224)*65536*(cb/cg)*(1-cb)/0.5
  84. // * cgv=(255/224)*65536*(cr/cg)*(1-cr)/0.5
  85. // *
  86. // * where Y=cr*R+cg*G+cb*B (cr+cg+cb=1)
  87. // 
  88.   int convmat[8][4]=
  89.  {
  90.   {117504, 138453, 13954, 34903}, //* no sequence_display_extension 
  91.   {117504, 138453, 13954, 34903}, //* ITU-R Rec. 709 (1990) 
  92.   {104597, 132201, 25675, 53279}, //* unspecified 
  93.   {104597, 132201, 25675, 53279}, //* reserved 
  94.   {104448, 132798, 24759, 53109}, //* FCC 
  95.   {104597, 132201, 25675, 53279}, //* ITU-R Rec. 624-4 System B, G 
  96.   {104597, 132201, 25675, 53279}, //* SMPTE 170M 
  97.   {117579, 136230, 16907, 35559}  //* SMPTE 240M (1987) 
  98. };
  99.    int OM[5][8][8]= 
  100.  {
  101. {
  102.   {4,5,5,5,5,5,5,4},
  103.   {5,5,5,5,5,5,5,5},
  104.   {5,5,6,6,6,6,5,5},
  105.   {5,5,6,6,6,6,5,5},
  106.   {5,5,6,6,6,6,5,5},
  107.   {5,5,6,6,6,6,5,5},
  108.   {5,5,5,5,5,5,5,5},
  109.   {4,5,5,5,5,5,5,4},
  110. },{
  111.   {2,2,2,2,2,2,2,2},
  112.   {1,1,2,2,2,2,1,1},
  113.   {1,1,1,1,1,1,1,1},
  114.   {1,1,1,1,1,1,1,1},
  115.   {0,0,0,0,0,0,0,0},
  116.   {0,0,0,0,0,0,0,0},
  117.   {0,0,0,0,0,0,0,0},
  118.   {0,0,0,0,0,0,0,0},
  119. },{
  120.   {0,0,0,0,0,0,0,0},
  121.   {0,0,0,0,0,0,0,0},
  122.   {0,0,0,0,0,0,0,0},
  123.   {0,0,0,0,0,0,0,0},
  124.   {1,1,1,1,1,1,1,1},
  125.   {1,1,1,1,1,1,1,1},
  126.   {1,1,2,2,2,2,1,1},
  127.   {2,2,2,2,2,2,2,2},
  128. },{
  129.   {0,0,0,0,1,1,1,2},
  130.   {0,0,0,0,1,1,2,2},
  131.   {0,0,0,0,1,1,2,2},
  132.   {0,0,0,0,1,1,2,2},
  133.   {0,0,0,0,1,1,2,2},
  134.   {0,0,0,0,1,1,2,2},
  135.   {0,0,0,0,1,1,2,2},
  136.   {0,0,0,0,1,1,1,2},
  137. },{
  138.   {2,1,1,1,0,0,0,0},
  139.   {2,2,1,1,0,0,0,0},
  140.   {2,2,1,1,0,0,0,0},
  141.   {2,2,1,1,0,0,0,0},
  142.   {2,2,1,1,0,0,0,0},
  143.   {2,2,1,1,0,0,0,0},
  144.   {2,2,1,1,0,0,0,0},
  145.   {2,1,1,1,0,0,0,0},
  146. }
  147. };
  148. // 
  149.  VLCtabI DCT3Dtab0[] = {
  150. {4225,7}, {4209,7}, {4193,7}, {4177,7}, {193,7}, {177,7}, 
  151. {161,7}, {4,7}, {4161,6}, {4161,6}, {4145,6}, {4145,6}, 
  152. {4129,6}, {4129,6}, {4113,6}, {4113,6}, {145,6}, {145,6}, 
  153. {129,6}, {129,6}, {113,6}, {113,6}, {97,6}, {97,6}, 
  154. {18,6}, {18,6}, {3,6}, {3,6}, {81,5}, {81,5}, 
  155. {81,5}, {81,5}, {65,5}, {65,5}, {65,5}, {65,5}, 
  156. {49,5}, {49,5}, {49,5}, {49,5}, {4097,4}, {4097,4}, 
  157. {4097,4}, {4097,4}, {4097,4}, {4097,4}, {4097,4}, {4097,4}, 
  158. {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, 
  159. {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, 
  160. {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, 
  161. {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, 
  162. {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, 
  163. {1,2}, {1,2}, {17,3}, {17,3}, {17,3}, {17,3}, 
  164. {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, 
  165. {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, 
  166. {33,4}, {33,4}, {33,4}, {33,4}, {33,4}, {33,4}, 
  167. {33,4}, {33,4}, {2,4}, {2,4},{2,4},{2,4},
  168. {2,4}, {2,4},{2,4},{2,4},
  169. };
  170. VLCtabI DCT3Dtab1[] = {
  171. {9,10}, {8,10}, {4481,9}, {4481,9}, {4465,9}, {4465,9}, 
  172. {4449,9}, {4449,9}, {4433,9}, {4433,9}, {4417,9}, {4417,9}, 
  173. {4401,9}, {4401,9}, {4385,9}, {4385,9}, {4369,9}, {4369,9}, 
  174. {4098,9}, {4098,9}, {353,9}, {353,9}, {337,9}, {337,9}, 
  175. {321,9}, {321,9}, {305,9}, {305,9}, {289,9}, {289,9}, 
  176. {273,9}, {273,9}, {257,9}, {257,9}, {241,9}, {241,9}, 
  177. {66,9}, {66,9}, {50,9}, {50,9}, {7,9}, {7,9}, 
  178. {6,9}, {6,9}, {4353,8}, {4353,8}, {4353,8}, {4353,8}, 
  179. {4337,8}, {4337,8}, {4337,8}, {4337,8}, {4321,8}, {4321,8}, 
  180. {4321,8}, {4321,8}, {4305,8}, {4305,8}, {4305,8}, {4305,8}, 
  181. {4289,8}, {4289,8}, {4289,8}, {4289,8}, {4273,8}, {4273,8}, 
  182. {4273,8}, {4273,8}, {4257,8}, {4257,8}, {4257,8}, {4257,8}, 
  183. {4241,8}, {4241,8}, {4241,8}, {4241,8}, {225,8}, {225,8}, 
  184. {225,8}, {225,8}, {209,8}, {209,8}, {209,8}, {209,8}, 
  185. {34,8}, {34,8}, {34,8}, {34,8}, {19,8}, {19,8}, 
  186. {19,8}, {19,8}, {5,8}, {5,8}, {5,8}, {5,8}, 
  187. };
  188. VLCtabI DCT3Dtab2[] = {
  189. {4114,11}, {4114,11}, {4099,11}, {4099,11}, {11,11}, {11,11}, 
  190. {10,11}, {10,11}, {4545,10}, {4545,10}, {4545,10}, {4545,10}, 
  191. {4529,10}, {4529,10}, {4529,10}, {4529,10}, {4513,10}, {4513,10}, 
  192. {4513,10}, {4513,10}, {4497,10}, {4497,10}, {4497,10}, {4497,10}, 
  193. {146,10}, {146,10}, {146,10}, {146,10}, {130,10}, {130,10}, 
  194. {130,10}, {130,10}, {114,10}, {114,10}, {114,10}, {114,10}, 
  195. {98,10}, {98,10}, {98,10}, {98,10}, {82,10}, {82,10}, 
  196. {82,10}, {82,10}, {51,10}, {51,10}, {51,10}, {51,10}, 
  197. {35,10}, {35,10}, {35,10}, {35,10}, {20,10}, {20,10}, 
  198. {20,10}, {20,10}, {12,11}, {12,11}, {21,11}, {21,11}, 
  199. {369,11}, {369,11}, {385,11}, {385,11}, {4561,11}, {4561,11}, 
  200. {4577,11}, {4577,11}, {4593,11}, {4593,11}, {4609,11}, {4609,11}, 
  201. {22,12}, {36,12}, {67,12}, {83,12}, {99,12}, {162,12}, 
  202. {401,12}, {417,12}, {4625,12}, {4641,12}, {4657,12}, {4673,12}, 
  203. {4689,12}, {4705,12}, {4721,12}, {4737,12}, {7167,7}, 
  204. {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, 
  205. {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, 
  206. {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, 
  207. {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, 
  208. {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, 
  209. {7167,7}, };