mom_structs.h
上传用户:enenge
上传日期:2007-01-08
资源大小:96k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. #ifndef _MOM_STRUCTS_H_
  2. #define _MOM_STRUCTS_H_
  3. #include "momusys.h"
  4. #define VERSION 1 /* Image Structure Version */
  5. /*****
  6. *
  7. *     Basic and generic image structure
  8. *
  9. *****/
  10. enum image_type {SHORT_TYPE,FLOAT_TYPE,UCHAR_TYPE};
  11. typedef enum image_type ImageType;
  12. union image_data
  13. {
  14.   SInt *s; /* SHORT data */
  15.   Float *f; /* FLOAT data */
  16.   UChar *u; /* UCHAR data */
  17. };
  18. typedef union image_data ImageData;
  19. struct image
  20. {
  21.   Int version; /* Version number */
  22.   UInt x,y; /* Image size */
  23.   Char upperodd; /* Flag to tell if the top line is considered
  24.    as even or odd (used for hex grids) */
  25.   Char grid; /* Grid type: s = square, h = hexagonal */
  26.   SInt *f; /* Image data with short int values */
  27.   ImageData *data; /* NEW: pointer to image data */
  28.   ImageType type; /* NEW: type of the image */
  29. };
  30. typedef struct image Image;
  31. typedef struct image ImageI; /* For compatibility with old source code */
  32. typedef struct image ImageF; /* For compatibility with old source code */
  33. /*****
  34. *
  35. *     Recommended structures for VOPs, VOLs and VOs (now compliant with VM3.0)
  36. *     (in the VOP structure *all* entries from the VOL syntax which
  37. *     are necessary for decoding the VOP are duplicated. These entries
  38. *     are marked as "VOL ...")
  39. *
  40. *****/
  41. struct vop
  42. {
  43.   /* Actual syntax elements for VOP (standard) */
  44.   Int prediction_type; /* VOP prediction type */
  45.   Int mod_time_base; /* VOP modulo time base (absolute) */
  46.   Float time_inc; /* VOP time increment (relative to last mtb) */
  47.   Int rounding_type;
  48.   Int width; /* VOP height (smallest rectangle) */
  49.   Int height; /* VOP width  (smallest rectangle) */
  50.   Int hor_spat_ref; /* VOP horizontal ref. (for composition) */
  51.   Int ver_spat_ref; /* VOP vertical ref.   (for composition) */
  52.   
  53.   Int intra_dc_vlc_thr;
  54.   Int quantizer; /* VOP quantizer for P-VOPs */
  55.   Int intra_quantizer; /* VOP quantizer for I-VOPs */
  56.  
  57.   /* Syntax elements copied from VOL (standard) */
  58.   Int time_increment_resolution;
  59.   Int intra_acdc_pred_disable; /* VOL disable INTRA DC prediction */
  60.   Int sr_for; /* VOP search range of motion vectors */
  61.   Int fcode_for; /* VOP dynamic range of motion vectors */
  62.   Int quant_precision;
  63.   Int bits_per_pixel;
  64.   /* Pointers to the images (YUVA) and to related VOPs */
  65.   Image *y_chan; /* Y component of the VOP texture */
  66.   Image *u_chan; /* U component of the VOP texture */
  67.   Image *v_chan; /* V component of the VOP texture */
  68. };
  69. typedef struct vop Vop;
  70. struct object_layer_cfg
  71. {
  72. Float frame_rate; /* VOL frame rate */
  73.     Int  M;     /* M-1 number of B-VOPs between consecutive P-VOPs*/
  74. Int start_frame; /* Frame at which to start coding */
  75. Int end_frame;     /* Frame at which to end coding */
  76. Int bit_rate;     /* Target bitrate */
  77. Int  frame_skip; /* Number of frames to skip between codings */
  78. Int quantizer; /* Initial value for H.263 INTRA quantizer */
  79. Int intra_quantizer; /* Initial value for H.263 INTER quantizer */
  80. Int intra_period; /* Regular rate of INTRA VOP */
  81. /* Automatically calculated coding fields */
  82. Int modulo_time_base[2]; /* Modulo time base must be maintained for VOL */
  83. };
  84. typedef struct object_layer_cfg VolConfig;
  85. #include "mom_util.h"
  86. #include "mom_access.h"
  87. #endif /* _MOM_STRUCTS_H_ */