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

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. //    I have converted origional fast h.263 encoder library from C to C++ 
  10. //   so that it can be integrated into any windows application easily.
  11. //   I have removed some of unnecessary codes/files from the
  12. //   fast h263 library.Also moved definitions and declarations
  13. //   in their proper .h and .cpp files.
  14. //
  15. //    File description : 
  16. //    Name    : struct.h
  17. //
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #if !defined _STRUCT_H
  21. #define _STRUCT_H
  22. /* Motionvector structure */
  23. typedef struct motionvector 
  24. {
  25.   int x; /* Horizontal comp. of mv   */
  26.   int y; /* Vertical comp. of mv   */
  27.   int x_half; /* Horizontal half-pel acc.  */
  28.   int y_half; /* Vertical half-pel acc.  */
  29.   int min_error; /* Min error for this vector  */
  30.   int Mode;                     /* Necessary for adv. pred. mode */
  31. } MotionVector;
  32. /* Point structure */
  33. typedef struct point 
  34. {
  35.   int x;
  36.   int y;
  37. } Point;
  38. /* Structure with image data */
  39. typedef struct pict_image 
  40. {
  41.   unsigned int *lum; /* Luminance plane */
  42.   unsigned int *Cr; /* Cr plane */
  43.   unsigned int *Cb; /* Cb plane */
  44. } PictImage;
  45. /* Group of pictures structure. */
  46. /* Picture structure */
  47. typedef struct pict 
  48. {
  49.   int prev; 
  50.   int curr;
  51.   int TR;             /* Time reference */
  52.   int source_format;
  53.   int picture_coding_type;
  54.   int spare;
  55.   int unrestricted_mv_mode;
  56.   int PB;
  57.   int QUANT;
  58.   int DQUANT;
  59.   int MB;
  60.   int seek_dist;        /* Motion vector search window */
  61.   int use_gobsync;      /* flag for gob_sync */
  62.   int MODB;             /* B-frame mode */
  63.   int BQUANT;           /* which quantizer to use for B-MBs in PB-frame */
  64.   int TRB;              /* Time reference for B-picture */
  65.   int frame_inc;        /* buffer control frame_inc */
  66.   float QP_mean;        /* mean quantizer */
  67. } Pict;
  68. /* Slice structure */
  69. typedef struct slice 
  70. {
  71.   unsigned int vert_pos; /* Vertical position of slice  */
  72.   unsigned int quant_scale; /* Quantization scale */
  73. } Slice;
  74. /* Macroblock structure */
  75. typedef struct macroblock 
  76. {
  77.   int mb_address; /* Macroblock address  */
  78.   int macroblock_type; /* Macroblock type  */
  79.   int skipped; /* 1 if skipped */
  80.   MotionVector motion;         /* Motion Vector  */
  81. } Macroblock;
  82. /* Structure for macroblock data */
  83. typedef struct mb_structure 
  84. {
  85.   int lum[16][16];
  86.   int Cr[8][8];
  87.   int Cb[8][8];
  88. } MB_Structure;
  89. /* Structure for average results and virtal buffer data */
  90. typedef struct results 
  91. {
  92.   float SNR_l; /* SNR for luminance */
  93.   float SNR_Cr; /* SNR for chrominance */
  94.   float SNR_Cb;
  95.   float QP_mean;                /* Mean quantizer */
  96. } Results;
  97. typedef struct compression_parameters 
  98. {
  99. /* Contains all the parameters that are needed for 
  100.    encoding plus all the status between two encodings */
  101.   int half_pixel_searchwindow; /* size of search window in half pixels
  102.   if this value is 0, no search is performed
  103. */
  104.   int format; /*  */
  105.   int pels; /* Only used when format == CPARAM_OTHER */
  106.   int lines; /* Only used when format == CPARAM_OTHER */
  107.   int inter; /* TRUE of INTER frame encoded frames,
  108.    FALSE for INTRA frames */
  109.   int search_method; /* DEF_EXHAUSTIVE or DEF_LOGARITHMIC */
  110.   int advanced_method; /* TRUE : Use array to determine 
  111.           macroblocks in INTER frame
  112.   mode to be encoded */
  113.   int Q_inter; /* Quantization factor for INTER frames */
  114.   int Q_intra; /* Quantization factor for INTRA frames */
  115.   unsigned int *data; /* source data in qcif format */
  116.   unsigned int *interpolated_lum; /* intepolated recon luminance part */
  117.   unsigned int *recon; /* Reconstructed copy of compressed frame */
  118.   int *EncodeThisBlock; 
  119.                                 /* Array when advanced_method is used */
  120. } CParam;
  121. /* Structure for counted bits */
  122. typedef struct bits_counted
  123.  {
  124.   int Y;
  125.   int C;
  126.   int vec;
  127.   int CBPY;
  128.   int CBPCM;
  129.   int MODB;
  130.   int CBPB;
  131.   int COD;
  132.   int header;
  133.   int DQUANT;
  134.   int total;
  135.   int no_inter;
  136.   int no_inter4v;
  137.   int no_intra;
  138. /* NB: Remember to change AddBits(), ZeroBits() and AddBitsPicture() 
  139.    when entries are added here */
  140. } Bits;
  141. // Video Format structure...
  142. struct qcif 
  143. {
  144.   unsigned int Y[QCIF_YHEIGHT][QCIF_YWIDTH];
  145.   unsigned int U[QCIF_UHEIGHT][QCIF_UWIDTH];
  146.   unsigned int V[QCIF_VHEIGHT][QCIF_VWIDTH];
  147. };
  148. struct cif 
  149. {
  150.   unsigned int Y[CIF_YHEIGHT][CIF_YWIDTH];
  151.   unsigned int U[CIF_UHEIGHT][CIF_UWIDTH];
  152.   unsigned int V[CIF_VHEIGHT][CIF_VWIDTH];
  153. };
  154. struct qcif8bit 
  155. {
  156.   unsigned char Y[QCIF_YHEIGHT][QCIF_YWIDTH];
  157.   unsigned char U[QCIF_UHEIGHT][QCIF_UWIDTH];
  158.   unsigned char V[QCIF_VHEIGHT][QCIF_VWIDTH];
  159. };
  160. struct cif8bit 
  161. {
  162.   unsigned char Y[CIF_YHEIGHT][CIF_YWIDTH];
  163.   unsigned char U[CIF_UHEIGHT][CIF_UWIDTH];
  164.   unsigned char V[CIF_VHEIGHT][CIF_VWIDTH];
  165. };
  166. #endif