GstVp9Parser
For more details about the structures, you can refer to the specifications:
Functions
gst_vp9_parser_free
void gst_vp9_parser_free (GstVp9Parser * parser)
Frees parser.
Parameters:
parser
–
the GstVp9Parser to free
Since : 1.8
gst_vp9_parser_new
GstVp9Parser * gst_vp9_parser_new ()
Creates a new GstVp9Parser. It should be freed with gst_vp9_parser_free after use.
a new GstVp9Parser
Since : 1.8
gst_vp9_parser_parse_frame_header
GstVp9ParserResult gst_vp9_parser_parse_frame_header (GstVp9Parser * parser, GstVp9FrameHdr * frame_hdr, guint8 * data, gsize size)
Parses the VP9 bitstream contained in data, and fills in frame_hdr with the information. The size argument represent the whole frame size.
Parameters:
parser
–
The GstVp9Parser
frame_hdr
–
The GstVp9FrameHdr to fill
data
–
The data to parse
size
–
The size of the data to parse
Since : 1.8
gst_vp9_parser_parse_superframe_info
GstVp9ParserResult gst_vp9_parser_parse_superframe_info (GstVp9Parser * parser, GstVp9SuperframeInfo * superframe_info, guint8 * data, gsize size)
Parses the VP9 bitstream contained in data, and fills in superframe_info with the information. The size argument represent the whole superframe size. If data is not superframe but normal frame, the parser returns GST_VP9_PARSER_OK, frame_size[0] is set to size and frames_in_superframe is set to 1. Also this method does not validate vp9frame header and verifying the frame header is caller's responsibility.
Parameters:
parser
–
The GstVp9Parser
superframe_info
–
The GstVp9SuperframeInfo to fill
data
–
The data to parse
size
–
The size of the data to parse
Since : 1.18
Structures
GstVp9FrameHdr
struct _GstVp9FrameHdr
{
  guint profile;
  guint8 show_existing_frame;
  gint  frame_to_show;
  guint frame_type;
  guint8 show_frame;
  guint8 error_resilient_mode;
  guint32 width;
  guint32 height;
  guint8 display_size_enabled;
  guint32 display_width;
  guint32 display_height;
  guint frame_context_idx;
  guint8 intra_only;
  gint reset_frame_context;
  gint refresh_frame_flags;
  gint ref_frame_indices[GST_VP9_REFS_PER_FRAME];
  gint ref_frame_sign_bias[GST_VP9_REFS_PER_FRAME];
  gint allow_high_precision_mv;
  guint8 mcomp_filter_type;
  gint refresh_frame_context;
  /* frame_parallel_decoding_mode in vp9 code*/
  gint frame_parallel_decoding_mode;
  GstVp9LoopFilter loopfilter;
  GstVp9QuantIndices quant_indices;
  GstVp9SegmentationInfo segmentation;
  gint log2_tile_rows;
  gint log2_tile_columns;
  guint32 first_partition_size;
  /* calculated values */
  guint lossless_flag;
  guint32 frame_header_length_in_bytes;
};
Frame header
Fields
profile
		(guint)
		–
	encoded profile
show_existing_frame
		(guint8)
		–
	display already decoded frame instead of doing the decoding
frame_to_show
		(gint)
		–
	which frame to show if show_existing_frame is true
frame_type
		(guint)
		–
	frame type
show_frame
		(guint8)
		–
	indicate whether it is a displayable frame or not
error_resilient_mode
		(guint8)
		–
	error resilent mode
width
		(guint32)
		–
	frame width
height
		(guint32)
		–
	frame height
display_size_enabled
		(guint8)
		–
	display size enabled (cropping)
display_width
		(guint32)
		–
	display width
display_height
		(guint32)
		–
	display height
frame_context_idx
		(guint)
		–
	frame context index
intra_only
		(guint8)
		–
	intra only frame
reset_frame_context
		(gint)
		–
	reset frame context
refresh_frame_flags
		(gint)
		–
	refresh reference frame flags
ref_frame_indices
		(gint[3] )
		–
	reference frame index
ref_frame_sign_bias
		(gint[3] )
		–
	sign bias for selecting altref,last and golden frames
allow_high_precision_mv
		(gint)
		–
	allow hight precision motion vector
mcomp_filter_type
		(guint8)
		–
	interpolation filter type
refresh_frame_context
		(gint)
		–
	refresh frame context indicator
frame_parallel_decoding_mode
		(gint)
		–
	enable or disable parallel decoding support.
loopfilter
		(GstVp9LoopFilter)
		–
	loopfilter values
quant_indices
		(GstVp9QuantIndices)
		–
	quantization indices
segmentation
		(GstVp9SegmentationInfo)
		–
	segmentation info
log2_tile_rows
		(gint)
		–
	tile row indicator
log2_tile_columns
		(gint)
		–
	tile column indicator
first_partition_size
		(guint32)
		–
	first partition size (after the uncompressed header)
lossless_flag
		(guint)
		–
	lossless mode decode
frame_header_length_in_bytes
		(guint32)
		–
	length of uncompressed header
Since : 1.8
GstVp9LoopFilter
struct _GstVp9LoopFilter {
  gint filter_level;
  gint sharpness_level;
  guint8 mode_ref_delta_enabled;
  guint8 mode_ref_delta_update;
  guint8 update_ref_deltas[GST_VP9_MAX_REF_LF_DELTAS];
  gint8 ref_deltas[GST_VP9_MAX_REF_LF_DELTAS];
  guint8 update_mode_deltas[GST_VP9_MAX_MODE_LF_DELTAS];
  gint8 mode_deltas[GST_VP9_MAX_MODE_LF_DELTAS];
};
Loop filter values
Fields
filter_level
		(gint)
		–
	indicates loop filter level for the current frame
sharpness_level
		(gint)
		–
	indicates sharpness level for thecurrent frame
mode_ref_delta_enabled
		(guint8)
		–
	indicate if filter adjust is on
mode_ref_delta_update
		(guint8)
		–
	indicates if the delta values used in an adjustment are updated in the current frame
update_ref_deltas
		(guint8[4] )
		–
	indicate which ref deltas are updated
ref_deltas
		(gint8[4] )
		–
	Loop filter strength adjustments based on frame type (intra, inter)
update_mode_deltas
		(guint8[2] )
		–
	indicate with mode deltas are updated
mode_deltas
		(gint8[2] )
		–
	Loop filter strength adjustments based on mode (zero, new mv)
Since : 1.8
GstVp9Parser
struct _GstVp9Parser
{
#ifndef GST_REMOVE_DEPRECATED
  void *priv;          /* unused, kept around for ABI compatibility */
#endif
  gint subsampling_x;
  gint subsampling_y;
  guint bit_depth;
  guint color_space;
  guint color_range;
  guint8 mb_segment_tree_probs[GST_VP9_SEG_TREE_PROBS];
  guint8 segment_pred_probs[GST_VP9_PREDICTION_PROBS];
  GstVp9Segmentation segmentation[GST_VP9_MAX_SEGMENTS];
};
Parser context that needs to be live across frames
Fields
priv
		(void *)
		–
	GstVp9ParserPrivate struct to keep track of state variables
subsampling_x
		(gint)
		–
	horizontal subsampling
subsampling_y
		(gint)
		–
	vertical subsampling
bit_depth
		(guint)
		–
	bit depth of the stream
color_space
		(guint)
		–
	color space standard
color_range
		(guint)
		–
	color range standard
mb_segment_tree_probs
		(guint8[7] )
		–
	decoding tree probabilities
segment_pred_probs
		(guint8[3] )
		–
	segment prediction probabiilties
segmentation
		(GstVp9Segmentation[8] )
		–
	Segmentation info
Since : 1.8
GstVp9QuantIndices
struct _GstVp9QuantIndices
{
  guint8 y_ac_qi;
  gint8 y_dc_delta;
  gint8 uv_dc_delta;
  gint8 uv_ac_delta;
};
Dequantization indices.
Fields
y_ac_qi
		(guint8)
		–
	indicates the dequantization table index used for the luma AC coefficients
y_dc_delta
		(gint8)
		–
	indicates the delta value that is added to the baseline index to obtain the luma DC coefficient dequantization index
uv_dc_delta
		(gint8)
		–
	indicates the delta value that is added to the baseline index to obtain the chroma DC coefficient dequantization index
uv_ac_delta
		(gint8)
		–
	indicates the delta value that is added to the baseline index to obtain the chroma AC coefficient dequantization index
Since : 1.8
GstVp9Segmentation
struct _GstVp9Segmentation
{
  guint8 filter_level[GST_VP9_MAX_REF_LF_DELTAS][GST_VP9_MAX_MODE_LF_DELTAS];
  gint16 luma_ac_quant_scale;
  gint16 luma_dc_quant_scale;
  gint16 chroma_ac_quant_scale;
  gint16 chroma_dc_quant_scale;
  guint8 reference_frame_enabled;
  gint reference_frame;
  guint8 reference_skip;
};
Segmentation info kept across multiple frames
Fields
filter_level
		(guint8[4][2] )
		–
	loop filter level
luma_ac_quant_scale
		(gint16)
		–
	AC quant scale for luma(Y) component
luma_dc_quant_scale
		(gint16)
		–
	DC quant scale for luma(Y) component chroma_ac_quant_scale AC quant scale for chroma(U/V) component
chroma_ac_quant_scale
		(gint16)
		–
	chroma_dc_quant_scale
		(gint16)
		–
	DC quant scale for chroma (U/V) component
reference_frame_enabled
		(guint8)
		–
	alternate reference frame enablement
reference_frame
		(gint)
		–
	alternate reference frame
reference_skip
		(guint8)
		–
	a block skip mode that implies both the use of a (0,0) motion vector and that no residual will be coded
Since : 1.8
GstVp9SegmentationInfo
struct _GstVp9SegmentationInfo {
  /* enable in setup_segmentation*/
  guint8  enabled;
  /* update_map in setup_segmentation*/
  guint8 update_map;
  /* tree_probs exist or not*/
  guint8 update_tree_probs[GST_VP9_SEG_TREE_PROBS];
  guint8 tree_probs[GST_VP9_SEG_TREE_PROBS];
  /* pred_probs exist or not*/
  guint8 update_pred_probs[GST_VP9_PREDICTION_PROBS];
  guint8 pred_probs[GST_VP9_PREDICTION_PROBS];
  /* abs_delta in setup_segmentation */
  guint8 abs_delta;
  /* temporal_update in setup_segmentation */
  guint8 temporal_update;
  /* update_data in setup_segmentation*/
  guint8 update_data;
  GstVp9SegmentationInfoData data[GST_VP9_MAX_SEGMENTS];
};
Segmentation info
Fields
enabled
		(guint8)
		–
	enables the segmentation feature for the current frame
update_map
		(guint8)
		–
	determines if segmentation is updated in the current frame
update_tree_probs
		(guint8[7] )
		–
	determines if tree probabilities updated or not
tree_probs
		(guint8[7] )
		–
	segment tree probabilities
update_pred_probs
		(guint8[3] )
		–
	determines if prediction probabilities updated or not
pred_probs
		(guint8[3] )
		–
	prediction probabilities
abs_delta
		(guint8)
		–
	interpretation of segment data values
temporal_update
		(guint8)
		–
	type of map update
update_data
		(guint8)
		–
	indicates if the segment feature data is updated in the current frame
data
		(GstVp9SegmentationInfoData[8] )
		–
	segment feature data
Since : 1.8
GstVp9SegmentationInfoData
struct _GstVp9SegmentationInfoData {
  /* SEG_LVL_ALT_Q */
  guint8 alternate_quantizer_enabled;
  gint16 alternate_quantizer;
  /* SEG_LVL_ALT_LF */
  guint8 alternate_loop_filter_enabled;
  gint8 alternate_loop_filter;
  /* SEG_LVL_REF_FRAME */
  guint8 reference_frame_enabled;
  gint reference_frame;
  guint8 reference_skip;
};
Segmentation info for each segment
Fields
alternate_quantizer_enabled
		(guint8)
		–
	indicate alternate quantizer enabled at segment level
alternate_quantizer
		(gint16)
		–
	alternate quantizer value
alternate_loop_filter_enabled
		(guint8)
		–
	indicate alternate loop filter enabled at segment level
alternate_loop_filter
		(gint8)
		–
	alternate loop filter
reference_frame_enabled
		(guint8)
		–
	indicate alternate reference frame at segment level
reference_frame
		(gint)
		–
	alternate reference frame
reference_skip
		(guint8)
		–
	a block skip mode that implies both the use of a (0,0) motion vector and that no residual will be coded.
Since : 1.8
GstVp9SuperframeInfo
struct _GstVp9SuperframeInfo {
  guint32 bytes_per_framesize;
  guint32 frames_in_superframe;
  guint32 frame_sizes[GST_VP9_MAX_FRAMES_IN_SUPERFRAME];
  guint32 superframe_index_size;
};
Superframe info
Fields
bytes_per_framesize
		(guint32)
		–
	indicates the number of bytes needed to code each frame size
frames_in_superframe
		(guint32)
		–
	indicates the number of frames within this superframe
frame_sizes
		(guint32[8] )
		–
	specifies the size in bytes of frame number i (zero indexed) within this superframe
superframe_index_size
		(guint32)
		–
	indicates the total size of the superframe_index
Since : 1.18
Enumerations
GstVP9Profile
typedef enum {
  GST_VP9_PROFILE_0,
  GST_VP9_PROFILE_1,
  GST_VP9_PROFILE_2,
  GST_VP9_PROFILE_3,
  GST_VP9_PROFILE_UNDEFINED
} GstVP9Profile;
	Members
GST_VP9_PROFILE_0
		(0)
		–
	GST_VP9_PROFILE_1
		(1)
		–
	GST_VP9_PROFILE_2
		(2)
		–
	GST_VP9_PROFILE_3
		(3)
		–
	GST_VP9_PROFILE_UNDEFINED
		(4)
		–
	GstVp9BitDepth
typedef enum {
  GST_VP9_BIT_DEPTH_8  = 8,
  GST_VP9_BIT_DEPTH_10 = 10,
  GST_VP9_BIT_DEPTH_12 = 12
} GstVp9BitDepth;
Bit depths of encoded frames
Members
GST_VP9_BIT_DEPTH_8
		(8)
		–
	Bit depth is 8 GST_VP9_BIT_DEPTH_10 Bit depth is 10
GST_VP9_BIT_DEPTH_10
		(10)
		–
	GST_VP9_BIT_DEPTH_12
		(12)
		–
	Bit depth is 12
Since : 1.8
GstVp9ColorRange
typedef enum {
  GST_VP9_CR_LIMITED,
  GST_VP9_CR_FULL
} GstVp9ColorRange;
Possible color value ranges
Members
GST_VP9_CR_LIMITED
		(0)
		–
	Y range is [16-235], UV range is [16-240]
GST_VP9_CR_FULL
		(1)
		–
	Full range for Y,U and V [0-255]
Since : 1.8
GstVp9ColorSpace
typedef enum {
  GST_VP9_CS_UNKNOWN               = 0,
  GST_VP9_CS_BT_601                = 1,
  GST_VP9_CS_BT_709                = 2,
  GST_VP9_CS_SMPTE_170             = 3,
  GST_VP9_CS_SMPTE_240             = 4,
  GST_VP9_CS_BT_2020               = 5,
  GST_VP9_CS_RESERVED_2            = 6,
  GST_VP9_CS_SRGB                  = 7
} GstVp9ColorSpace;
Supported ColorSpace standards
Members
GST_VP9_CS_UNKNOWN
		(0)
		–
	Unknown color space
GST_VP9_CS_BT_601
		(1)
		–
	BT.601
GST_VP9_CS_BT_709
		(2)
		–
	BT.709
GST_VP9_CS_SMPTE_170
		(3)
		–
	SMPTE.170
GST_VP9_CS_SMPTE_240
		(4)
		–
	SMPTE.240
GST_VP9_CS_BT_2020
		(5)
		–
	BT.2020
GST_VP9_CS_RESERVED_2
		(6)
		–
	GST_VP9_CS_SRGB
		(7)
		–
	sRGB
Since : 1.8
GstVp9FrameType
typedef enum {
  GST_VP9_KEY_FRAME   = 0,
  GST_VP9_INTER_FRAME = 1
} GstVp9FrameType;
VP9 frame types
Members
GST_VP9_KEY_FRAME
		(0)
		–
	Key frame, only have intra blocks
GST_VP9_INTER_FRAME
		(1)
		–
	Inter frame, both intra and inter blocks
Since : 1.8
GstVp9InterpolationFilter
typedef enum {
  GST_VP9_INTERPOLATION_FILTER_EIGHTTAP        = 0,
  GST_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1,
  GST_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP  = 2,
  GST_VP9_INTERPOLATION_FILTER_BILINEAR        = 3,
  GST_VP9_INTERPOLATION_FILTER_SWITCHABLE      = 4
} GstVp9InterpolationFilter;
Interpolation Filters Types
Members
GST_VP9_INTERPOLATION_FILTER_EIGHTTAP
		(0)
		–
	EightTap interpolation filter
GST_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH
		(1)
		–
	Smooth interpolation filter
GST_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP
		(2)
		–
	Shart interpolation filter
GST_VP9_INTERPOLATION_FILTER_BILINEAR
		(3)
		–
	Bilinear interpolation filter
GST_VP9_INTERPOLATION_FILTER_SWITCHABLE
		(4)
		–
	Selectable interpolation filter
Since : 1.8
GstVp9ParserResult
typedef enum
{
  GST_VP9_PARSER_OK,
  GST_VP9_PARSER_BROKEN_DATA,
  GST_VP9_PARSER_ERROR,
} GstVp9ParserResult;
	Members
GST_VP9_PARSER_OK
		(0)
		–
	GST_VP9_PARSER_BROKEN_DATA
		(1)
		–
	GST_VP9_PARSER_ERROR
		(2)
		–
	GstVp9RefFrameType
typedef enum {
  GST_VP9_REF_FRAME_INTRA  = 0,
  GST_VP9_REF_FRAME_LAST   = 1,
  GST_VP9_REF_FRAME_GOLDEN = 2,
  GST_VP9_REF_FRAME_ALTREF = 3,
  GST_VP9_REF_FRAME_MAX    = 4
} GstVp9RefFrameType;
Reference Frame types
Members
GST_VP9_REF_FRAME_INTRA
		(0)
		–
	Intra reference frame
GST_VP9_REF_FRAME_LAST
		(1)
		–
	Last Reference frame
GST_VP9_REF_FRAME_GOLDEN
		(2)
		–
	Golden Reference frame
GST_VP9_REF_FRAME_ALTREF
		(3)
		–
	Alternate Reference frame
GST_VP9_REF_FRAME_MAX
		(4)
		–
	Since : 1.8
The results of the search are