| Top |  |  |  |  | 
| #define | MAX_HRD_NUM_LEAKY_BUCKETS | 
| #define | GST_VC1_BFRACTION_BASIS | 
| enum | GstVC1StartCode | 
| enum | GstVC1Profile | 
| enum | GstVC1ParserResult | 
| enum | GstVC1PictureType | 
| enum | GstVC1Level | 
| enum | GstVC1QuantizerSpec | 
| enum | GstVC1DQProfile | 
| enum | GstVC1Condover | 
| enum | GstVC1MvMode | 
| struct | GstVC1SeqHdr | 
| struct | GstVC1AdvancedSeqHdr | 
| struct | GstVC1SeqLayer | 
| struct | GstVC1SeqStructA | 
| struct | GstVC1SeqStructB | 
| struct | GstVC1SeqStructC | 
| struct | GstVC1HrdParam | 
| struct | GstVC1EntryPointHdr | 
| struct | GstVC1FrameHdr | 
| struct | GstVC1PicAdvanced | 
| struct | GstVC1PicSimpleMain | 
| GstVC1Picture | |
| struct | GstVC1VopDquant | 
| struct | GstVC1BDU | 
For more details about the structures, look at the smpte specifications (S421m-2006.pdf).
GstVC1ParserResult gst_vc1_identify_next_bdu (const guint8 *data,gsize size,GstVC1BDU *bdu);
Parses data
 and fills bdu
 fields
| data | The data to parse | |
| size | the size of  | |
| bdu | The GstVC1BDU where to store parsed bdu headers. | [out] | 
GstVC1ParserResult gst_vc1_parse_sequence_header (const guint8 *data,gsize size,GstVC1SeqHdr *seqhdr);
Parses data
, and fills seqhdr
 fields.
GstVC1ParserResult gst_vc1_parse_sequence_layer (const guint8 *data,gsize size,GstVC1SeqLayer *seqlayer);
Parses data
, and fills seqlayer
 fields.
GstVC1ParserResult gst_vc1_parse_sequence_header_struct_a (const guint8 *data,gsize size,GstVC1SeqStructA *structa);
Parses data
, and fills structa
 fields.
GstVC1ParserResult gst_vc1_parse_sequence_header_struct_b (const guint8 *data,gsize size,GstVC1SeqStructB *structb);
Parses data
, and fills structb
 fields.
GstVC1ParserResult gst_vc1_parse_sequence_header_struct_c (const guint8 *data,gsize size,GstVC1SeqStructC *structc);
Parses data
, and fills structc
 fields.
GstVC1ParserResult gst_vc1_parse_entry_point_header (const guint8 *data,gsize size,GstVC1EntryPointHdr *entrypoint,GstVC1SeqHdr *seqhdr);
Parses data
, and sets entrypoint
 fields.
| data | The data to parse | |
| size | the size of  | |
| entrypoint | The GstVC1EntryPointHdr to set. | [out] | 
| seqhdr | The GstVC1SeqHdr currently being parsed | 
GstVC1ParserResult gst_vc1_parse_frame_header (const guint8 *data,gsize size,GstVC1FrameHdr *framehdr,GstVC1SeqHdr *seqhdr,GstVC1BitPlanes *bitplanes);
Parses data
, and fills entrypoint
 fields.
| data | The data to parse | |
| size | the size of  | |
| framehdr | The GstVC1FrameHdr to fill. | |
| seqhdr | The GstVC1SeqHdr currently being parsed | |
| bitplanes | The GstVC1BitPlanes to store bitplanes in or  | 
GstVC1BitPlanes *
gst_vc1_bitplanes_new (void);
Creates a new GstVC1BitPlanes. It should be freed with
gst_vc1_bitplanes_free() after use.
gboolean gst_vc1_bitplanes_ensure_size (GstVC1BitPlanes *bitplanes,GstVC1SeqHdr *seqhdr);
Fills the bitplanes
 structure from seqhdr
, this function
should be called after gst_vc1_parse_sequence_header if
in simple or main mode, or after gst_vc1_parse_entry_point_header
if in advanced mode.
| bitplanes | The GstVC1BitPlanes to reset | |
| seqhdr | The GstVC1SeqHdr from which to set  | 
struct GstVC1SeqHdr {
  GstVC1Profile profile;
  GstVC1SeqStructC struct_c;
  /*  calculated */
  guint mb_height;
  guint mb_width;
  guint mb_stride;
  GstVC1AdvancedSeqHdr   advanced;
};
Structure for sequence headers in any profile.
struct GstVC1AdvancedSeqHdr {
  GstVC1Level  level;
  guint8  frmrtq_postproc;
  guint8  bitrtq_postproc;
  guint8  postprocflag;
  guint16 max_coded_width;
  guint16 max_coded_height;
  guint8  pulldown;
  guint8  interlace;
  guint8  tfcntrflag;
  guint8  finterpflag;
  guint8  psf;
  guint8  display_ext;
  guint16 disp_horiz_size;
  guint16 disp_vert_size;
  guint8  aspect_ratio_flag;
  guint8  aspect_ratio;
  guint8  aspect_horiz_size;
  guint8  aspect_vert_size;
  guint8  framerate_flag;
  guint8  framerateind;
  guint8  frameratenr;
  guint8  frameratedr;
  guint16 framerateexp;
  guint8  color_format_flag;
  guint8  color_prim;
  guint8  transfer_char;
  guint8  matrix_coef;
  guint8  hrd_param_flag;
  guint8  colordiff_format;
  GstVC1HrdParam hrd_param;
  /* computed */
  guint framerate; /* Around in fps, 0 if unknown*/
  guint bitrate;   /* Around in kpbs, 0 if unknown*/
  guint par_n;
  guint par_d;
  guint fps_n;
  guint fps_d;
  /* The last parsed entry point */
  GstVC1EntryPointHdr entrypoint;
};
Structure for the advanced profile sequence headers specific parameters.
struct GstVC1SeqLayer {
  guint32 numframes;
  GstVC1SeqStructA struct_a;
  GstVC1SeqStructB struct_b;
  GstVC1SeqStructC struct_c;
};
struct GstVC1SeqStructB {
  GstVC1Level  level;
  guint8 cbr;
  guint32 framerate;
  /* In simple and main profiles only */
  guint32 hrd_buffer;
  guint32 hrd_rate;
};
struct GstVC1SeqStructC {
  GstVC1Profile profile;
  /* Only in simple and main profiles */
  guint8 frmrtq_postproc;
  guint8 bitrtq_postproc;
  guint8 res_sprite;
  guint8 loop_filter;
  guint8 multires;
  guint8 fastuvmc;
  guint8 extended_mv;
  guint8 dquant;
  guint8 vstransform;
  guint8 overlap;
  guint8 syncmarker;
  guint8 rangered;
  guint8 maxbframes;
  guint8 quantizer;
  guint8 finterpflag;
  /* Computed */
  guint framerate; /* Around in fps, 0 if unknown*/
  guint bitrate;   /* Around in kpbs, 0 if unknown*/
  /* This should be filled by user if previously known */
  guint16 coded_width;
  /* This should be filled by user if previously known */
  guint16 coded_height;
  /* Wmvp specific */
  guint8 wmvp;          /* Specify if the stream is wmp or not */
  /* In the wmvp case, the framerate is not computed but in the bistream */
  guint8 slice_code;
};
struct GstVC1HrdParam {
  guint8 hrd_num_leaky_buckets;
  guint8 bit_rate_exponent;
  guint8 buffer_size_exponent;
  guint16 hrd_rate[MAX_HRD_NUM_LEAKY_BUCKETS];
  guint16 hrd_buffer[MAX_HRD_NUM_LEAKY_BUCKETS];
};
struct GstVC1EntryPointHdr {
  guint8 broken_link;
  guint8 closed_entry;
  guint8 panscan_flag;
  guint8 refdist_flag;
  guint8 loopfilter;
  guint8 fastuvmc;
  guint8 extended_mv;
  guint8 dquant;
  guint8 vstransform;
  guint8 overlap;
  guint8 quantizer;
  guint8 coded_size_flag;
  guint16 coded_width;
  guint16 coded_height;
  guint8 extended_dmv;
  guint8 range_mapy_flag;
  guint8 range_mapy;
  guint8 range_mapuv_flag;
  guint8 range_mapuv;
  guint8 hrd_full[MAX_HRD_NUM_LEAKY_BUCKETS];
};
Structure for entrypoint header, this will be used only in advanced profiles
struct GstVC1FrameHdr {
  /* common fields */
  GstVC1PictureType ptype;
  guint8 interpfrm;
  guint8 halfqp;
  guint8 transacfrm;
  guint8 transdctab;
  guint8 pqindex;
  guint8 pquantizer;
  /* Computed */
  guint8 pquant;
  /* Convenience fields */
  guint8 profile;
  guint8 dquant;
  /*  If dquant */
  GstVC1VopDquant vopdquant;
  union {
    GstVC1PicSimpleMain simple;
    GstVC1PicAdvanced advanced;
  } pic;
  /* Size of the picture layer in bits */
  guint header_size;
};
Structure that represent picture in any profile or mode.
You should look at ptype
 and profile
 to know what is currently
in use.
struct GstVC1PicAdvanced {
  GstVC1FrameCodingMode fcm;
  guint8  tfcntr;
  guint8  rptfrm;
  guint8  tff;
  guint8  rff;
  guint8  ps_present;
  guint32 ps_hoffset;
  guint32 ps_voffset;
  guint16 ps_width;
  guint16 ps_height;
  guint8  rndctrl;
  guint8  uvsamp;
  guint8  postproc;
  /*  B and P picture specific */
  guint8  mvrange;
  guint8  mvmode;
  guint8  mvtab;
  guint8  cbptab;
  guint8  ttmbf;
  guint8  ttfrm;
  /* B and BI picture only
   * Should be divided by #GST_VC1_BFRACTION_BASIS
   * to get the real value. */
  guint16 bfraction;
  /* ppic */
  guint8  mvmode2;
  guint8  lumscale;
  guint8  lumshift;
  /* bipic */
  guint8  bf;
  guint8  condover;
  guint8  transacfrm2;
  /* Biplane value, those fields only mention the fact
   * that the bitplane is in raw mode or not */
  guint8  acpred;
  guint8  overflags;
  guint8  mvtypemb;
  guint8  skipmb;
  guint8  directmb;
  guint8  forwardmb; /* B pic interlace field only */
  /* For interlaced pictures only */
  guint8  fieldtx;
  /* P and B pictures */
  guint8  intcomp;
  guint8  dmvrange;
  guint8  mbmodetab;
  guint8  imvtab;
  guint8  icbptab;
  guint8  mvbptab2;
  guint8  mvbptab4; /* If 4mvswitch in ppic */
  /*  P picture */
  guint8  mvswitch4;
  /* For interlaced fields only */
  guint16 refdist;
  guint8 fptype; /* Raw value */
  /* P pic */
  guint8  numref;
  guint8  reffield;
  guint8  lumscale2;
  guint8  lumshift2;
  guint8  intcompfield;
};
struct GstVC1PicSimpleMain {
  guint8 frmcnt;
  guint8 mvrange;
  guint8 rangeredfrm;
  /* I and P pic simple and main profiles only */
  guint8 respic;
  /* I and BI pic simple and main profiles only */
  guint8 transacfrm2;
  guint8 bf;
  /* B and P pic simple and main profiles only */
  guint8 mvmode;
  guint8 mvtab;
  guint8 ttmbf;
  /* P pic simple and main profiles only */
  guint8 mvmode2;
  guint8 lumscale;
  guint8 lumshift;
  guint8 cbptab;
  guint8 ttfrm;
  /* B and BI picture only
   * Should be divided by #GST_VC1_BFRACTION_BASIS
   * to get the real value. */
  guint16 bfraction;
  /* Biplane value, those fields only mention the fact
   * that the bitplane is in raw mode or not */
  guint8 mvtypemb;
  guint8 skipmb;
  guint8 directmb; /* B pic main profile only */
};
struct GstVC1VopDquant {
  guint8 pqdiff;
  guint8 abspq;
  /* Computed */
  guint8 altpquant;
  /*  if dqant != 2*/
  guint8 dquantfrm;
  guint8 dqprofile;
  /* Boundary edge selection. This represents DQSBEDGE
   * if dqprofile == GST_VC1_DQPROFILE_SINGLE_EDGE or
   * DQDBEDGE if dqprofile == GST_VC1_DQPROFILE_DOUBLE_EDGE */
  guint8 dqbedge;
  /* FIXME: remove */
  guint8 unused;
  /* if dqprofile == GST_VC1_DQPROFILE_ALL_MBS */
  guint8 dqbilevel;
};