Top |
Functions
Types and Values
#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 |
Description
For more details about the structures, look at the smpte specifications (S421m-2006.pdf).
Functions
gst_vc1_identify_next_bdu ()
GstVC1ParserResult gst_vc1_identify_next_bdu (const guint8 *data
,gsize size
,GstVC1BDU *bdu
);
Parses data
and fills bdu
fields
Parameters
data |
The data to parse |
|
size |
the size of |
|
bdu |
The GstVC1BDU where to store parsed bdu headers. |
[out] |
gst_vc1_parse_sequence_header ()
GstVC1ParserResult gst_vc1_parse_sequence_header (const guint8 *data
,gsize size
,GstVC1SeqHdr *seqhdr
);
Parses data
, and fills seqhdr
fields.
gst_vc1_parse_sequence_layer ()
GstVC1ParserResult gst_vc1_parse_sequence_layer (const guint8 *data
,gsize size
,GstVC1SeqLayer *seqlayer
);
Parses data
, and fills seqlayer
fields.
gst_vc1_parse_sequence_header_struct_a ()
GstVC1ParserResult gst_vc1_parse_sequence_header_struct_a (const guint8 *data
,gsize size
,GstVC1SeqStructA *structa
);
Parses data
, and fills structa
fields.
gst_vc1_parse_sequence_header_struct_b ()
GstVC1ParserResult gst_vc1_parse_sequence_header_struct_b (const guint8 *data
,gsize size
,GstVC1SeqStructB *structb
);
Parses data
, and fills structb
fields.
gst_vc1_parse_sequence_header_struct_c ()
GstVC1ParserResult gst_vc1_parse_sequence_header_struct_c (const guint8 *data
,gsize size
,GstVC1SeqStructC *structc
);
Parses data
, and fills structc
fields.
gst_vc1_parse_entry_point_header ()
GstVC1ParserResult gst_vc1_parse_entry_point_header (const guint8 *data
,gsize size
,GstVC1EntryPointHdr *entrypoint
,GstVC1SeqHdr *seqhdr
);
Parses data
, and sets entrypoint
fields.
Parameters
data |
The data to parse |
|
size |
the size of |
|
entrypoint |
The GstVC1EntryPointHdr to set. |
[out] |
seqhdr |
The GstVC1SeqHdr currently being parsed |
gst_vc1_parse_frame_header ()
GstVC1ParserResult gst_vc1_parse_frame_header (const guint8 *data
,gsize size
,GstVC1FrameHdr *framehdr
,GstVC1SeqHdr *seqhdr
,GstVC1BitPlanes *bitplanes
);
Parses data
, and fills entrypoint
fields.
Parameters
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 |
gst_vc1_bitplanes_new ()
GstVC1BitPlanes *
gst_vc1_bitplanes_new (void
);
Creates a new GstVC1BitPlanes. It should be freed with
gst_vc1_bitplanes_free()
after use.
gst_vc1_bitplanes_ensure_size ()
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.
Parameters
bitplanes |
The GstVC1BitPlanes to reset |
|
seqhdr |
The GstVC1SeqHdr from which to set |
Types and Values
struct GstVC1SeqHdr
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
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
struct GstVC1SeqLayer { guint32 numframes; GstVC1SeqStructA struct_a; GstVC1SeqStructB struct_b; GstVC1SeqStructC struct_c; };
struct GstVC1SeqStructB
struct GstVC1SeqStructB { GstVC1Level level; guint8 cbr; guint32 framerate; /* In simple and main profiles only */ guint32 hrd_buffer; guint32 hrd_rate; };
struct GstVC1SeqStructC
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
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
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
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
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; };
Members
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint32 |
||
guint32 |
||
guint16 |
||
guint16 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint16 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint16 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
||
guint8 |
struct GstVC1PicSimpleMain
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
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; };